aboutsummaryrefslogtreecommitdiff
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
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.
-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);
})
})