aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
author0neGal <mail@0negal.com>2024-02-03 20:00:07 +0100
committer0neGal <mail@0negal.com>2024-02-03 20:05:15 +0100
commit25697f42b3d1a451be16701613001b9d95efd66e (patch)
tree53c140dedff2409536cde8f688320dfa8b4c3c94 /src
parent1beb36b3a810f04a3a2c789f382149a4793340f4 (diff)
downloadViper-25697f42b3d1a451be16701613001b9d95efd66e.tar.gz
Viper-25697f42b3d1a451be16701613001b9d95efd66e.zip
requests.js ignores cache time when no internet
This means if you dont have any internet, but there's a cached requests, it'll use that, even if it was cached a very long time ago. This just attempts to eliminate errors. This can still be turned off for things where you dont want this to happen, notably the masterserver status.
Diffstat (limited to 'src')
-rw-r--r--src/app/js/launcher.js2
-rw-r--r--src/modules/requests.js15
2 files changed, 14 insertions, 3 deletions
diff --git a/src/app/js/launcher.js b/src/app/js/launcher.js
index 98f16dc..3130253 100644
--- a/src/app/js/launcher.js
+++ b/src/app/js/launcher.js
@@ -145,7 +145,7 @@ async function loadServers() {
// ask the masterserver for the list of servers, if this has
// been done recently, it'll simply return the cached version
let servers = JSON.parse(
- await request(host, path, "ns-servers")
+ await request(host, path, "ns-servers", false)
)
masterserver = true;
diff --git a/src/modules/requests.js b/src/modules/requests.js
index bc113bb..d4ee678 100644
--- a/src/modules/requests.js
+++ b/src/modules/requests.js
@@ -166,7 +166,7 @@ requests.cache.set = (cache_key, data) => {
// if `cache_key` is set, we'll first attempt to check if any valid
// cache with that key exists, and then return it directly if its still
// valid cache.
-requests.get = (host, path, cache_key, max_time_min) => {
+requests.get = (host, path, cache_key, ignore_max_time_when_offline = true, max_time_min) => {
let cached = requests.cache.get(cache_key, max_time_min);
if (cached) {
return cached;
@@ -207,8 +207,19 @@ requests.get = (host, path, cache_key, max_time_min) => {
})
})
- // an error occured, simply `reject()`
+ // an error occured
.on("error", () => {
+ if (ignore_max_time_when_offline) {
+ // check if the request has been cached before, at all, not
+ // caring about how long time ago it was, and if it was, we
+ // simply return that, as a last resort.
+ cached = requests.cache.get(cache_key, false);
+
+ if (cached) {
+ return resolve(cached);
+ }
+ }
+
reject(false);
})
})