flamenco/web/app/src/autoreloader.js
Sybren A. Stüvel 7bceaf5b10 Web: reload window 60 minutes after user activity
Reload the webapp 60 minutes after keyboard/mouse activity.

Previously this was a hard 60 minutes after the webapp was loaded, which
means that it could happen while someone was actively working in the web
interface. This should now be prevented.
2022-07-07 16:08:54 +02:00

37 lines
1.0 KiB
JavaScript

import { DateTime } from "luxon";
// Do a full refresh once per hour. This is just to make sure that long-lived
// displays (like the TV in the hallway at Blender HQ) pick up on HTML/JS/CSS
// changes eventually.
const reloadAfter = {minute: 60};
function getReloadDeadline() {
return DateTime.now().plus(reloadAfter);
}
let reloadAt = getReloadDeadline();
// Every activity (mouse move, keyboard, etc.) defers the reload.
function deferReload() {
reloadAt = getReloadDeadline();
}
function maybeReload() {
const now = DateTime.now();
if (now < reloadAt) return;
window.location.reload();
}
export default function autoreload() {
// Check whether reloading is needed every minute.
window.setInterval(maybeReload, 60 * 1000);
window.addEventListener("resize", deferReload);
window.addEventListener("mousedown", deferReload);
window.addEventListener("mouseup", deferReload);
window.addEventListener("mousemove", deferReload);
window.addEventListener("keydown", deferReload);
window.addEventListener("keyup", deferReload);
}