summaryrefslogtreecommitdiffstats
path: root/assets/js
diff options
context:
space:
mode:
Diffstat (limited to 'assets/js')
-rw-r--r--assets/js/app.js.bvr115
-rw-r--r--assets/js/setup-storage.js77
2 files changed, 108 insertions, 84 deletions
diff --git a/assets/js/app.js.bvr b/assets/js/app.js.bvr
index d19c1d6..0a91078 100644
--- a/assets/js/app.js.bvr
+++ b/assets/js/app.js.bvr
@@ -1,20 +1,20 @@
<@?i global@>
const app_version = "<@?g app_version@>";
const previous_commit = "<@?g latest_commit@>";
-
+const BEZIAPP_UPDATE_INTERVAL = 300; // update vsakih 300 sekund
if ("serviceWorker" in navigator) {
- navigator.serviceWorker.register("/sw.js")
- .then(() => { })
- .catch((err) => console.log("Service worker registration failed", err));
+ navigator.serviceWorker.register("/sw.js")
+ .then(() => { })
+ .catch((err) => console.log("Service worker registration failed", err));
}
// Listen to messages from service workers.
if (navigator.serviceWorker) {
- navigator.serviceWorker.addEventListener('message', (event) => {
- if (event.data.msg === "install") {
- window.location.replace("/index.html");
- }
- });
+ navigator.serviceWorker.addEventListener('message', (event) => {
+ if (event.data.msg === "install") {
+ window.location.replace("/index.html");
+ }
+ });
}
/**
@@ -24,12 +24,12 @@ if (navigator.serviceWorker) {
* @param {string} devmsg Developer-friendly message
*/
async function UIAlert(usermsg, devmsg) {
- if (true) { // če bo kakšen dev switch?
- M.toast( { html: usermsg } );
- console.log(`[BežiApp UIAlert] ${usermsg} ${devmsg}`);
- } else {
- M.toast( { html: `${usermsg} ${devmsg}` } );
- }
+ if (true) { // če bo kakšen dev switch?
+ M.toast({ html: usermsg });
+ console.log(`[BežiApp UIAlert] ${usermsg} ${devmsg}`);
+ } else {
+ M.toast({ html: `${usermsg} ${devmsg}` });
+ }
}
/**
@@ -37,44 +37,69 @@ async function UIAlert(usermsg, devmsg) {
* @param {Object} err GSEC error object
*/
function gsecErrorHandlerUI(err) {
- console.log(`gsecErrorHanderUI: handling ${err}`);
- if(err == GSEC_ERR_NET || err == GSEC_ERR_NET_POSTBACK_GET ||
- err == GSEC_ERR_NET_POSTBACK_POST) {
+ console.log(`gsecErrorHanderUI: handling ${err}`);
+ if (err == GSEC_ERR_NET || err == GSEC_ERR_NET_POSTBACK_GET ||
+ err == GSEC_ERR_NET_POSTBACK_POST) {
- UIAlert( D("gsecErrNet") );
- } else if(err == GSEC_ERR_LOGIN) {
- UIAlert( D("gsecErrLogin") );
- localforage.setItem("logged_in", false).then( () => {
- window.location.replace("/index.html");
- });
- } else {
- UIAlert( D("gsecErrOther") );
- }
+ UIAlert(D("gsecErrNet"));
+ } else if (err == GSEC_ERR_LOGIN) {
+ UIAlert(D("gsecErrLogin"));
+ localforage.setItem("logged_in", false).then(() => {
+ window.location.replace("/index.html");
+ });
+ } else {
+ UIAlert(D("gsecErrOther"));
+ }
}
+var update_app_function = async function () {
+ $.get("/cache_name.txt", (data, status) => {
+ var cache_name = data.split("///")[1].split("|||")[0];
+ var data_to_send = {
+ action: "checkversion",
+ valid_cache_name: cache_name
+ }
+ navigator.serviceWorker.controller.postMessage(JSON.stringify(data_to_send));
+ });
+}
var error_report_function = async function (msg, url, lineNo, columnNo, error) {
- localforage.getItem("errorReporting").then(async function(value) {
- let selectedE = value;
- if(value == null || value.length < 1) {
- selectedE = "on";
- }
- if(selectedE == "on") {
- var data = {};
- data.error = {"msg": msg, "url": url, "line": lineNo, "column": columnNo, "obj": error};
- data.client = {"ua": navigator.userAgent, "app_version": app_version, "previous_commit": previous_commit, "username": null};
+ // catching everything here so no looping error shit. that's the last thing we want
+ try {
+ localforage.getItem("errorReporting").then(async function (value) {
+ let selectedE = value;
+ if (value == null || value.length < 1) {
+ selectedE = "on";
+ }
+ if (selectedE == "on") {
+ var data = {};
+ data.error = { "msg": msg, "url": url, "line": lineNo, "column": columnNo, "obj": error };
+ data.client = { "ua": navigator.userAgent, "app_version": app_version, "previous_commit": previous_commit, "username": null };
- // Load required data
- data.client.username = await localforage.getItem("username");
+ // Load required data
+ data.client.username = await localforage.getItem("username");
- data.type = "error";
- $.post("https://beziapp-report.gimb.tk/", data);
- } else {
- console.log("error not reported as reporting is disabled!");
- }
- }).catch(() => {});
- return false;
+ data.type = "error";
+ $.post("https://beziapp-report.gimb.tk/", data);
+ } else {
+ console.log("error not reported as reporting is disabled!");
+ }
+ }).catch(() => { });
+ return false;
+ } catch (e) {
+ console.log("error_erport_function: !!! ERROR! (caught) - probably some network error.");
+ }
}
window.onerror = error_report_function;
window.onunhandledrejection = error_report_function;
+
+
+document.addEventListener("DOMContentLoaded", () => {
+ localforage.getItem("lastUpdate").then((data) => {
+ if(Math.floor(Date.now() / 1000) > data + BEZIAPP_UPDATE_INTERVAL) {
+ // trigger an update
+ update_app_function();
+ }
+ });
+}); \ No newline at end of file
diff --git a/assets/js/setup-storage.js b/assets/js/setup-storage.js
index c862d5f..b29c959 100644
--- a/assets/js/setup-storage.js
+++ b/assets/js/setup-storage.js
@@ -1,44 +1,43 @@
async function setupStorage(force = false) {
- let logged_in;
- promises_check_if_already_installed = [
- localforage.getItem("logged_in").then( function(val) {
- console.log("[setupStorage] logged in status: " + val);
- logged_in = val;
- })
- ];
- await Promise.all(promises_check_if_already_installed);
+ let logged_in;
+ promises_check_if_already_installed = [
+ localforage.getItem("logged_in").then(function (val) {
+ console.log("[setupStorage] logged in status: " + val);
+ logged_in = val;
+ })
+ ];
+ await Promise.all(promises_check_if_already_installed);
- let promises_update = [
- localforage.setItem("profile", {}),
- localforage.setItem("timetable", []),
- localforage.setItem("teachers", []),
- localforage.setItem("gradings", []),
- localforage.setItem("grades", []),
- localforage.setItem("absences", {}),
- localforage.setItem("messages", [[], [], []]), // see messages.js:129, commit 8eb9ca9caca30fbbe023243657535ab4088be377
- localforage.setItem("directory", {}), //\\ well I could remember my own code but I didn't.
- localforage.setItem("meals", {}),
- localforage.setItem("chosenLang", "en"),
- localforage.setItem("theme", "light"),
- localforage.setItem("errorReporting", "on"),
- localforage.setItem("triggerWarningAccepted", false)
- ];
+ let promises_update = [
+ localforage.setItem("profile", {}),
+ localforage.setItem("timetable", []),
+ localforage.setItem("teachers", []),
+ localforage.setItem("gradings", []),
+ localforage.setItem("grades", []),
+ localforage.setItem("absences", {}),
+ localforage.setItem("messages", [[], [], []]), // see messages.js:129, commit 8eb9ca9caca30fbbe023243657535ab4088be377
+ localforage.setItem("directory", {}), //\\ well I could remember my own code but I didn't.
+ localforage.setItem("meals", {}),
+ localforage.setItem("chosenLang", "en"),
+ localforage.setItem("theme", "light"),
+ localforage.setItem("errorReporting", "on"),
+ localforage.setItem("lastUpdate", 0),
+ localforage.setItem("triggerWarningAccepted", false)
+ ];
- if (logged_in && force == false) { // torej, če je že bila prijava narejena, ne posodobi backwards-compatible vrednosti (username, password,...)
- await Promise.all(promises_update);
- console.log("[setupStorage] user logged in: only updated");
- } else {
+ if (logged_in && force == false) { // torej, če je že bila prijava narejena, ne posodobi backwards-compatible vrednosti (username, password,...)
+ await Promise.all(promises_update);
+ console.log("[setupStorage] user logged in: only updated");
+ } else {
- let promises_first_install = [
- localforage.setItem("logged_in", false),
- localforage.setItem("username", ""),
- localforage.setItem("password", ""),
- localforage.setItem("chosenLang", "en"),
- localforage.setItem("theme", "light"),
- localforage.setItem("triggerWarningAccepted", false)
- ];
- await localforage.clear();
- await Promise.all(promises_first_install);
- console.log("[setupStorage] user not logged in: set up whole database");
- }
+ let promises_first_install = [
+ localforage.setItem("logged_in", false),
+ localforage.setItem("username", ""),
+ localforage.setItem("password", ""),
+ ];
+ await localforage.clear();
+ await Promise.all(promises_first_install);
+ await Promise.all(promises_update);
+ console.log("[setupStorage] user not logged in: set up whole database");
+ }
}