AVS-Carton-Shipment-Verifier/wwwroot/js/desktop-lifecycle.js

42 lines
1.1 KiB
JavaScript

(() => {
const scheduleUrl = "/api/desktop/schedule-shutdown";
const cancelUrl = "/api/desktop/cancel-shutdown";
const registerUrl = "/api/desktop/register-session";
let sessionRegistered = false;
const post = (url) => {
if (typeof navigator.sendBeacon === "function") {
navigator.sendBeacon(url, "");
return;
}
fetch(url, { method: "POST", keepalive: true }).catch(() => { });
};
const registerSession = () => {
fetch(registerUrl, { method: "POST", keepalive: true })
.then((response) => {
if (response.ok) {
sessionRegistered = true;
post(cancelUrl);
}
})
.catch(() => { });
};
if (document.readyState === "loading") {
document.addEventListener("DOMContentLoaded", registerSession, { once: true });
} else {
registerSession();
}
window.addEventListener("pagehide", (event) => {
if (event.persisted || !sessionRegistered) {
return;
}
post(scheduleUrl);
});
})();