From 957e8a9ad0b7bfe33079ca2d6a5dc097fdc2daa9 Mon Sep 17 00:00:00 2001 From: 0neGal Date: Fri, 20 Dec 2024 19:29:48 +0100 Subject: if offline close browser and disable some buttons --- src/app/js/browser.js | 4 ++-- src/app/js/mods.js | 2 +- src/app/js/request.js | 25 +++++++++++++++++++++++-- src/app/js/set_buttons.js | 12 +++++++----- 4 files changed, 33 insertions(+), 10 deletions(-) (limited to 'src/app/js') diff --git a/src/app/js/browser.js b/src/app/js/browser.js index d30ad9f..10428bc 100644 --- a/src/app/js/browser.js +++ b/src/app/js/browser.js @@ -489,11 +489,11 @@ browser.mod_el = (properties) => {
${properties.title}
${properties.description}
- - diff --git a/src/app/js/mods.js b/src/app/js/mods.js index 755aad1..9eb528b 100644 --- a/src/app/js/mods.js +++ b/src/app/js/mods.js @@ -74,7 +74,7 @@ mods.load = (mods_obj) => {
${mod_details.name}
${mod_details.description}
- diff --git a/src/app/js/request.js b/src/app/js/request.js index d0ef39b..bec9d7c 100644 --- a/src/app/js/request.js +++ b/src/app/js/request.js @@ -1,3 +1,4 @@ +const set_buttons = require("./set_buttons"); const ipcRenderer = require("electron").ipcRenderer; // invokes `requests.get()` from `src/modules/requests.js` through the @@ -26,6 +27,12 @@ let state_action = (is_online) => { // hide offline icon sent_error_toast = false; offline.classList.add("hidden"); + + // re-enable buttons that require internet + set_buttons( + true, false, + document.querySelectorAll(".requires-internet") + ) } else { // show toast if (! sent_error_toast) { @@ -35,10 +42,21 @@ let state_action = (is_online) => { // show offline icon offline.classList.remove("hidden"); + + // disable buttons that require internet + set_buttons( + false, false, + document.querySelectorAll(".requires-internet") + ) + + // close mod browser + try { + require("./browser").toggle(false); + } catch(err) {} } } -state_action(navigator.onLine); +setTimeout(() => state_action(navigator.onLine), 100); window.addEventListener("online", () => state_action(navigator.onLine)); window.addEventListener("offline", () => state_action(navigator.onLine)); @@ -60,7 +78,10 @@ let check_endpoints = async () => { // handle result of check state_action(!! status.succeeded.length); -}; check_endpoints(); +} + +// check endpoints on startup +setTimeout(check_endpoints, 100); // check endpoints every 30 seconds setInterval(check_endpoints, 30000); diff --git a/src/app/js/set_buttons.js b/src/app/js/set_buttons.js index 9cb9d3e..4a0e1b2 100644 --- a/src/app/js/set_buttons.js +++ b/src/app/js/set_buttons.js @@ -6,22 +6,24 @@ ipcRenderer.on("set-buttons", (_, state) => { // disables or enables certain buttons when for example // updating/installing Northstar. -module.exports = (state, enable_gamepath_btns) => { - playNsBtn.disabled = ! state; +module.exports = (state, enable_gamepath_btns, elements) => { + if (! elements) { + playNsBtn.disabled = ! state; + } let disable_array = (array) => { for (let i = 0; i < array.length; i++) { array[i].disabled = ! state; if (state) { - array[i].classList.remove("disabled") + array[i].classList.remove("disabled"); } else { - array[i].classList.add("disabled") + array[i].classList.add("disabled"); } } } - disable_array(document.querySelectorAll([ + disable_array(elements || document.querySelectorAll([ "#modsdiv .el button", ".disable-when-installing", ".playBtnContainer .playBtn", -- cgit v1.2.3