From 56e607c04a0d642fbce8f2a3cd5705f8e07277a9 Mon Sep 17 00:00:00 2001 From: Marcel Kapfer Date: Fri, 16 Jun 2017 00:04:50 +0200 Subject: [PATCH] Implemented new saveAddresses method in Dart Fixes the bug, that long list can't be sent via get methods. --- res/dart/main.dart | 50 ++++++++++++++++++++++++++++++++++++++++++-- res/php/savelist.php | 4 ++-- 2 files changed, 50 insertions(+), 4 deletions(-) diff --git a/res/dart/main.dart b/res/dart/main.dart index 77c345f..0881b29 100644 --- a/res/dart/main.dart +++ b/res/dart/main.dart @@ -1,14 +1,20 @@ // Copyright (c) 2016 - 2017, Marcel Kapfer (mmk2410). // MIT License +/// frontend code for filespread, a simple file over email spreading web app. import 'dart:convert'; import 'dart:html'; +/// main method with click listners. void main() { // send mail listener querySelector("#send").onClick.listen(sendMail); + + // save address list listner + querySelector("#save-addresses").onClick.listen(saveAddresses); } +/// function for calling the backend to send mails. void sendMail(MouseEvent event) { InputElement title = querySelector("#mailtitle"); InputElement text = querySelector("#mailtext"); @@ -26,12 +32,52 @@ void sendMail(MouseEvent event) { String url = "res/php/sendmail.php?data=${JSON.encode(data)}"; - HttpRequest.getString(url).then((response) { + HttpRequest.getString(url).then((String response) { if (response == "0") { window.alert("Mails successfully sent."); } else { window.alert("Failed to send mail."); } }); - +} + +/// function to update the addresses list in the backend. +void saveAddresses(MouseEvent event) { + TextAreaElement addresses = querySelector("#edit-addresses"); + SelectElement list = querySelector("#edit-address-list"); + + List addressesList = new List(); + + addresses.value.split("\n").forEach((String address) { + if (address.isNotEmpty) addressesList.add(address); + }); + + Map data = {"list": list.value, "addresses": addressesList}; + + String url = "res/php/savelist.php"; + + HttpRequest.postFormData(url, {"data": JSON.encode(data)}).then((HttpRequest response) { + if (response.responseText == "0") { + window.alert("Addresses sucessfully saved."); + updateAddresses(addressesList, list.value); + } else { + window.alert("Failed to save adresses."); + } + }); +} + +/// Updated the frontend after an address change. +void updateAddresses(List addresses, String list) { + SelectElement currentList = querySelector("#address_list"); + + if (currentList.value == list) { + DivElement addressesContainer = querySelector("#addresses"); + addressesContainer.children .removeWhere((Element child) => addressesContainer.children.contains(child)); + + addresses.forEach((String address) { + ParagraphElement addressElement = new ParagraphElement(); + addressElement.text = address; + addressesContainer.children.add(addressElement); + }); + } } diff --git a/res/php/savelist.php b/res/php/savelist.php index a2f9b56..8f223e5 100644 --- a/res/php/savelist.php +++ b/res/php/savelist.php @@ -1,8 +1,8 @@