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); }