diff options
Diffstat (limited to '')
-rw-r--r-- | js/messaging.js.save | 396 |
1 files changed, 0 insertions, 396 deletions
diff --git a/js/messaging.js.save b/js/messaging.js.save deleted file mode 100644 index fb764a8..0000000 --- a/js/messaging.js.save +++ /dev/null @@ -1,396 +0,0 @@ -const API_ENDPOINT = "https://gimb.tk/test.php"; -const DIRECTORY_URL = "/directory.json"; -// const API_ENDPOINT = "http://localhost:5000/test.php"; - -// "Global" object for name directory -var directory = null; - -async function checkLogin() { - localforage.getItem("logged_in").then(function (value) { - // This code runs once the value has been loaded - // from the offline store. - if (value !== true) { - window.location.replace("/index.html"); - } - }).catch(function (err) { - // This code runs if there were any errors - console.log(err); - }); -} - -// -----------HTML HELPERS----------- -function htmlEncode(value) { - // Create a in-memory element, set its inner text (which is automatically encoded) - // Then grab the encoded contents back out. The element never exists on the DOM. - return $("<textarea/>").text(value).html(); -} - -function htmlDecode(value) { - return $("<textarea/>").html(value).text(); -} -// --------------------------------- - -// Try to fetch name:id directory -function loadDirectory() { - $.ajax({ - url: DIRECTORY_URL, - crossDomain: true, - - dataType: "json", - cache: false, - type: "GET", - - success: (data) => { - // If we were able to retrieve it, update the saved directory - localforage.setItem("directory", data); - directory = data; - // Populate autocomplete - populateAutocomplete(); - }, - - error: () => { - // Otherwise, try to retrieve stored directory - localforage.getItem("directory").then((stored_directory) => { - if (stored_directory === null) { - // If unable, set directory to null (so other functions know that we don't have it) - M.toast({ html: "Name directory not set, sending unavailable" }); - directory = null; - // Disable send button - document.getElementById("msg-send").disabled = true; - } else { - directory = stored_directory; - // Populate autocomplete - populateAutocomplete(); - } - }); - } - }); -} - -function populateAutocomplete() { - let elems = document.querySelectorAll('.autocomplete-fullname'); - - // vse editam v nanotu - let autocomplete_entries = directory; - for (let variableKey in autocomplete_entries) { - autocomplete_entries[variableKey] = null; - } - - M.Autocomplete.init(elems, { - data: autocomplete_entries, - onAutocomplete: validateName, - minLength: 0 - }); -} - -// Function to toggle loading bar -function setLoading(state) { - if (state) { - $("#loading-bar").removeClass("hidden"); - } else { - $("#loading-bar").addClass("hidden"); - } -} - -// Function, responsible for fetching and displaying data -async function loadMessages(force_refresh = true, katera = 0) { - setLoading(true); - // Load required data - let promises_to_run = [ - localforage.getItem("username").then((value) => { - username = value; - }), - localforage.getItem("password").then((value) => { - password = value; - }), - localforage.getItem("messages").then((value) => { - messages = value; - }) - ]; - - Promise.all(promises_to_run).then(() => { - - if (messages === null || force_refresh) { - $.ajax({ - url: API_ENDPOINT, - crossDomain: true, - data: { - "u": username, - "p": password, - "m": "fetchsporocilaseznam", - "a": katera // Message type, see API doc for details - }, - dataType: "json", - cache: false, - type: "GET", - - success: (data) => { - // If data is null, the request failed - if (data === null) { - M.toast({ html: "Request failed!" }); - setLoading(false); - } else { - // Save messages & populate view - // console.log(data); // debug - localforage.setItem("messages", data).then((value) => { - messages = value; - displayData(); - setLoading(false); - }); - } - }, - - error: () => { - M.toast({ html: "Error fetching messages!" }); - setLoading(false); - } - - }) - } else { - displayData(); - setLoading(false); - } - }); -} - -async function loadMsg(id) { - setLoading(true); - // Load required data - let promises_to_run = [ - localforage.getItem("username").then((value) => { - username = value; - }), - localforage.getItem("password").then((value) => { - password = value; - }), - ]; - - Promise.all(promises_to_run).then(() => { - $.ajax({ - url: API_ENDPOINT, - crossDomain: true, - data: { - "u": username, - "p": password, - "m": "fetchsporocilo", - "a": id - }, - dataType: "json", - cache: false, - type: "GET", - success: (data) => { - // If data is null, the request failed - if (data === null) { - M.toast({ html: "Unable to receive the message, Request failed!" }); - setLoading(false); - } else { - displayMessage(id, data); - setLoading(false); - } - }, - - error: () => { - M.toast({ html: "Error fetching message, No Internet connnection?" }); - setLoading(false); - } - - }) - }); -} - - -async function deleteMsg(id) { - setLoading(true); - // Load required data - let promises_to_run = [ - localforage.getItem("username").then((value) => { - username = value; - }), localforage.getItem("password").then((value) => { - password = value; - }), - ]; - Promise.all(promises_to_run).then(() => { - $.ajax({ - url: API_ENDPOINT, - crossDomain: true, - data: { - "u": username, - "p": password, - "m": "izbrisisporocilo", - "a": id - }, - dataType: "json", - cache: false, - type: "GET", - success: (data) => { - // If data is null, the request failed - if (data === null) { - M.toast({ html: "Unable to delete the message, Request failed!" }); - setLoading(false); - } else { - document.getElementById("msg-box-" + id).remove(); - setLoading(false); - } - }, - - error: () => { - M.toast({ html: "Unable to delete the message, No Internet connnection?" }); - setLoading(false); - } - - }) - }); -} - -function displayMessage(id, data) { - document.getElementById("msg-body-" + id).innerHTML = filterXSS(data["telo"]); -} - -// Function for displaying data -function displayData() { - let msg_list = document.getElementById("msg-list"); - msg_list.innerHTML = ""; - messages.forEach(element => { - if (element["zadeva"].substr(0, 14) != "beziapp-ctlmsg") - msg_list.innerHTML += '<div class="col s12 m6" id="msg_box-' + - filterXSS(element["id"]) + - '"><div class="card blue-grey darken-1"><div class="card-content white-text"><span class="card-title">' + - filterXSS(element["zadeva"]) + - '</span><p id="msg_body-' + - filterXSS(element["id"]) + - '"><button class="btn waves-effect waves-light" onclick=loadMsg("' + - filterXSS(element["id"]) + - '"); type="submit">Load message body<i class="material-icons right">system_update</i></button></p></div><div class="card-action"><a href=javascript:deleteMsg("' + - filterXSS(element["id"]) + - '");><i class="material-icons">delete</i></a><a href=\'javascript:document.getElementById("full_name").value="' + - filterXSS(element["posiljatelj"]) + - '";document.getElementById("msg_subject").value="Re: ' + - filterXSS(element["zadeva"]) + - '";M.updateTextFields();document.getElementById("navigation-main").scrollIntoView();\'><i class="material-icons">reply</i></a>' + - filterXSS(element["posiljatelj"]) + " » " + filterXSS(element["datum"]["dan"]) + ". " + filterXSS(element["datum"]["mesec"]) + ". " + filterXSS(element["datum"]["leto"]) + " at " + - filterXSS(element["cas"]["ura"]) + ":" + filterXSS(element["cas"]["minuta"]) + - '</div></div></div>'; - }); -} - -async function sendMessage(recipient_number, subject, body) { - setLoading(true); - let promises_to_run = [ - localforage.getItem("username").then((value) => { - username = value; - }), - localforage.getItem("password").then((value) => { - password = value; - }), - ]; - Promise.all(promises_to_run).then(() => { - $.ajax({ - url: API_ENDPOINT, - crossDomain: true, - data: { - "u": username, - "p": password, - "m": "posljisporocilo", - "a": recipient_number, - "b": subject, - "c": body - }, - - dataType: "json", - cache: false, - - type: "POST", - success: () => { - // we CAN'T know wether the mesgg was delievered - M.toast({ html: "Message was probably sent, check the Sent folder to be sure!" }); - setLoading(false); - }, - error: () => { - M.toast({ html: "Error sending message, no Internet connnection?" }); - setLoading(false); - } - }) - }); -} - -function validateName() { - if (directory !== null) { - - if ($("#full-name").val() in directory) { - $("#full-name").addClass("valid"); - $("#full-name").removeClass("invalid"); - document.getElementById("msg-send").disabled = false; - } else { - $("#full-name").addClass("invalid"); - $("#full-name").removeClass("valid"); - document.getElementById("msg-send").disabled = true; - } - - } -} - -// Setup event listeners for buttons -function setupEventListeners() { - // Button to add a photo - $("#msg-add-photo").click(() => { - let input = document.createElement("input"); - input.type = "file"; - input.onchange = (e) => { - // getting a hold of the file reference - let file = e.target.files[0]; - // setting up the reader - let reader = new FileReader(); - reader.readAsDataURL(file); // this is reading as data url - // here we tell the reader what to do when it's done reading... - reader.onload = readerEvent => { - additionalstufftoaddtomessage += '<br><img src="' + readerEvent.target.result + '" />'; // this is the content! - M.toast({ html: "Image added as an attachment." }); - } - } - input.click(); - }); - - // Verify recipient when input loses focus - $("#full-name").on("blur", validateName); - - // Button to send message - $("#msg-send").click(() => { - localforage.getItem("directory").then(function (value) { - sendMessage(value[document.getElementById("full-name").value], document.getElementById("msg-subject").value, - htmlEncode(document.getElementById("msg-body").value + additionalstufftoaddtomessage)); - document.getElementById("msg-body").value = ""; - document.getElementById("full-name").value = ""; - document.getElementById("msg-subject").value = ""; - additionalstufftoaddtomessage = ""; - }).catch(function (err) { - M.toast({ html: "Unable to read directory of people. Message could not be sent." }); - console.log(err); - }); - }); -} - -function getUrlParameter(sParam) { - const url_params = new URLSearchParams(window.location.search); - const found_param = url_params.get(sParam); - return found_param -} - -var additionalstufftoaddtomessage = ""; -document.addEventListener("DOMContentLoaded", () => { - - checkLogin(); - loadDirectory(); - setupEventListeners(); - - var receivedmessages = null; - loadMessages(true, 0); - - document.getElementById("full-name").value = getUrlParameter("m"); - M.updateTextFields(); - validateName(); - - // Setup side menu - const menus = document.querySelectorAll(".side-menu"); - M.Sidenav.init(menus, { edge: "right", draggable: true }); - -}); |