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 $("").text(value).html(); } function htmlDecode(value) { return $("").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 += '