fix: use mqtt last will #84
This commit is contained in:
+1
-1
@@ -147,7 +147,7 @@ const init = async () => {
|
||||
* Updates the shared hardware properties.
|
||||
*/
|
||||
const update = async () => {
|
||||
if (!HARDWARE.initialized) {
|
||||
if (!HARDWARE.initialized || APP.exiting) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
+11
-1
@@ -51,6 +51,7 @@ const init = async () => {
|
||||
// Init options
|
||||
const masked = password === null ? null : "*".repeat(password.length);
|
||||
const options = user === null || password === null ? {} : { username: user, password: password };
|
||||
options.will = { topic: `${INTEGRATION.root}/kiosk/state`, payload: "Terminated", qos: 1, retain: true };
|
||||
options.rejectUnauthorized = !("ignore_certificate_errors" in ARGS);
|
||||
|
||||
// Client connect
|
||||
@@ -109,17 +110,26 @@ const init = async () => {
|
||||
|
||||
// Update time sensors periodically (30s)
|
||||
setInterval(() => {
|
||||
if (APP.exiting) {
|
||||
return;
|
||||
}
|
||||
updateHeartbeat();
|
||||
updateLastActive();
|
||||
}, 30 * 1000);
|
||||
|
||||
// Update system sensors periodically (1min)
|
||||
setInterval(() => {
|
||||
if (APP.exiting) {
|
||||
return;
|
||||
}
|
||||
update();
|
||||
}, 60 * 1000);
|
||||
|
||||
// Update upgrade sensors periodically (1h)
|
||||
setInterval(() => {
|
||||
if (APP.exiting) {
|
||||
return;
|
||||
}
|
||||
updateApp();
|
||||
updatePackageUpgrades();
|
||||
}, 3600 * 1000);
|
||||
@@ -131,7 +141,7 @@ const init = async () => {
|
||||
* Updates the shared integration properties.
|
||||
*/
|
||||
const update = async () => {
|
||||
if (!INTEGRATION.initialized) {
|
||||
if (!INTEGRATION.initialized || APP.exiting) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
+10
-5
@@ -182,7 +182,7 @@ const init = async () => {
|
||||
* Updates the shared webview properties.
|
||||
*/
|
||||
const update = async () => {
|
||||
if (!WEBVIEW.initialized) {
|
||||
if (!WEBVIEW.initialized || APP.exiting) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -642,12 +642,15 @@ const windowEvents = async () => {
|
||||
|
||||
// Check for window touch events (1s)
|
||||
setInterval(() => {
|
||||
if (APP.exiting) {
|
||||
return;
|
||||
}
|
||||
const now = new Date();
|
||||
const then = WEBVIEW.tracker.pointer.time;
|
||||
const delta = (now - then) / 1000;
|
||||
|
||||
// Auto-hide navigation
|
||||
if (delta > 60 && WEBVIEW.tracker.status !== "Terminated") {
|
||||
if (delta > 60) {
|
||||
toggleNavigation("OFF");
|
||||
}
|
||||
}, 1000);
|
||||
@@ -997,9 +1000,8 @@ const appEvents = async () => {
|
||||
|
||||
// Handle exit events
|
||||
app.on("before-quit", () => {
|
||||
WEBVIEW.tracker.status = "Terminated";
|
||||
console.warn(`${APP.title} ${WEBVIEW.tracker.status}`);
|
||||
integration.update();
|
||||
APP.exiting = true;
|
||||
console.warn(`${APP.title} Terminated`);
|
||||
});
|
||||
process.on("SIGINT", app.quit);
|
||||
|
||||
@@ -1008,6 +1010,9 @@ const appEvents = async () => {
|
||||
|
||||
// Check for latest release infos (2h)
|
||||
setInterval(() => {
|
||||
if (APP.exiting) {
|
||||
return;
|
||||
}
|
||||
latestRelease();
|
||||
}, 7200 * 1000);
|
||||
await latestRelease();
|
||||
|
||||
Reference in New Issue
Block a user