From 25697f42b3d1a451be16701613001b9d95efd66e Mon Sep 17 00:00:00 2001 From: 0neGal Date: Sat, 3 Feb 2024 20:00:07 +0100 Subject: 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. --- src/app/js/launcher.js | 2 +- src/modules/requests.js | 15 +++++++++++++-- 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); }) }) -- cgit v1.2.3