X-Git-Url: https://rtime.felk.cvut.cz/gitweb/coffee/coffee-flask.git/blobdiff_plain/62a598b72247442c77a812db466e718d4b8df9c0..534f40f00c24fa2f629689a2436edcf7bbbc8e10:/templates/main.js diff --git a/templates/main.js b/templates/main.js index 178d9c8..ca89d02 100644 --- a/templates/main.js +++ b/templates/main.js @@ -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); + } } } }