blob: d0ef39baa5fd8773768b8f04b13d56ab50aac1a6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
const ipcRenderer = require("electron").ipcRenderer;
// invokes `requests.get()` from `src/modules/requests.js` through the
// main process, and returns the output
let request = async (...args) => {
return await ipcRenderer.invoke("request", ...args);
}
// invokes `requests.check()` from `src/modules/requests.js` through the
// main process, and returns the output
request.check = async (...args) => {
return await ipcRenderer.invoke("request-check", ...args);
}
request.delete_cache = () => {
ipcRenderer.send("delete-request-cache");
}
// keeps track of whether we've already sent a toast since we last went
// offline, to prevent multiple toasts
let sent_error_toast = false;
// shows or hides offline icon, and shows toast depending on `is_online`
let state_action = (is_online) => {
if (is_online) {
// hide offline icon
sent_error_toast = false;
offline.classList.add("hidden");
} else {
// show toast
if (! sent_error_toast) {
sent_error_toast = true;
ipcRenderer.send("no-internet");
}
// show offline icon
offline.classList.remove("hidden");
}
}
state_action(navigator.onLine);
window.addEventListener("online", () => state_action(navigator.onLine));
window.addEventListener("offline", () => state_action(navigator.onLine));
// checks a list of endpoints/domains we need to be functioning for a
// lot of the WAN functionality
let check_endpoints = async () => {
// if we're not online according to the navigator, it's highly
// unlikely the endpoints will succeed
if (! navigator.onLine) {
return state_action(false);
}
// check endpoints
let status = await request.check([
"https://github.com",
"https://northstar.tf",
"https://thunderstore.io"
])
// handle result of check
state_action(!! status.succeeded.length);
}; check_endpoints();
// check endpoints every 30 seconds
setInterval(check_endpoints, 30000);
module.exports = request;
|