aboutsummaryrefslogtreecommitdiff
path: root/src/app/js
diff options
context:
space:
mode:
author0neGal <mail@0negal.com>2024-12-20 19:29:48 +0100
committer0neGal <mail@0negal.com>2024-12-20 19:29:48 +0100
commit957e8a9ad0b7bfe33079ca2d6a5dc097fdc2daa9 (patch)
treeefae3014e6a97207adbddbb2dbd4b52a7210056f /src/app/js
parentada511f0c2f86a0a28e9d2129a1ebdd1edb19f3d (diff)
downloadViper-957e8a9ad0b7bfe33079ca2d6a5dc097fdc2daa9.tar.gz
Viper-957e8a9ad0b7bfe33079ca2d6a5dc097fdc2daa9.zip
if offline close browser and disable some buttons
Diffstat (limited to 'src/app/js')
-rw-r--r--src/app/js/browser.js4
-rw-r--r--src/app/js/mods.js2
-rw-r--r--src/app/js/request.js25
-rw-r--r--src/app/js/set_buttons.js12
4 files changed, 33 insertions, 10 deletions
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) => {
<div class="text">
<div class="title">${properties.title}</div>
<div class="description">${properties.description}</div>
- <button class="install bg-blue" onclick=''>
+ <button class="install bg-blue requires-internet" onclick=''>
<img src="icons/${installicon}.png">
<span>${installstr}</span>
</button>
- <button class="info" onclick="browser.preview.set('${properties.url}')">
+ <button class="info requires-internet" onclick="browser.preview.set('${properties.url}')">
<img src="icons/open.png">
<span>${lang('gui.browser.view')}</span>
</button>
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) => {
<div class="title">${mod_details.name}</div>
<div class="description">${mod_details.description}</div>
<button class="switch on orange"></button>
- <button class="update bg-blue">
+ <button class="update bg-blue requires-internet">
<img src="icons/downloads.png">
<span>${lang("gui.browser.update")}</span>
</button>
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",