]> rtime.felk.cvut.cz Git - coffee/coffee-flask.git/commitdiff
Use new data structure for offline-collected data
authorMichal <michal.sojka@cvut.cz>
Wed, 15 Aug 2018 10:14:06 +0000 (12:14 +0200)
committerMichal Sojka <michal.sojka@cvut.cz>
Thu, 16 Aug 2018 17:11:14 +0000 (19:11 +0200)
The data is now stored in an array. For details, see commit
985405cd4345315d0502fe9e75ef879ad0c452b3 in mt-apps repository.

templates/main.js

index 178d9c887d0fc36bf893b4e6d23bb204aaba2919..ca89d02a78aa56a695cda08534da5f946f8f3794 100644 (file)
@@ -15,25 +15,14 @@ function update(id, msg) {
     document.getElementById(id).innerHTML = msg;
 }
 
-function loadLocalStorage() {
+function replayOfflineQueue() {
     if (localStorage) {
-        if (localStorage.length) {
-            var entries = [];
-            for (var i = 0; i < localStorage.length; i++) {
-                var value = localStorage.getItem(localStorage.key(i));
-                try {
-                    var key = localStorage.key(i);
-                    var value = localStorage.getItem(key);
-                    entries.push({ key: key, value: value });
-                } catch (err) {
-                    console.log("no json: " + value)
-                }
-            }
-            localStorage.clear();
-            entries.sort((entry1, entry2) => { return entry1.key > entry2.key;});
-            for (var i = 0; i < entries.length; i++) {
-                updateRemote(entries[i].value);
-            }
+        let queue = JSON.parse(localStorage.getItem("offlineQueue")) || [];
+        if (Array.isArray(queue)) {
+            queue.forEach(function (entry) {
+                updateRemote(entry.data);
+            });
+            localStorage.removeItem("offlineQueue");
         }
     }
 }
@@ -92,7 +81,7 @@ function loadRemote(string) {
             if (this.status == 200) {
                 update("remote", this.responseText);
                 updateRemote = hiddenUpdateRemote;
-                loadLocalStorage();
+                replayOfflineQueue();
                 updateUI();
                 clearTimeout(reloadTimer);
             } else {
@@ -126,8 +115,14 @@ function ajax(method, route, data, id) {
                         data: data,
                         id: id
                     });
-                    localStorage.setItem(now, fuck);
-                    console.log(now + ": " + fuck);
+                    let queue = JSON.parse(localStorage.getItem("offlineQueue")) || [];
+                    queue.push({ time: Date.now(), data: fuck });
+                    try {
+                        localStorage.setItem("offlineQueue", JSON.stringify(queue));
+                    }
+                    catch (err) {
+                        console.log(err);
+                    }
                 }
             }
         }