atagen

malice

public
Star0
Watch0
0b88effaec6d8c5b10a7d8def9b9a3c999d2442f
2
ssh://brewery@pls.lobotomise.me:33/atagen/malice.git
web/src/lib/engine-state.tsTypescript22 lines713 B
1
import { writable } from 'svelte/store';
2
import { mayAutoReload } from './engine-build';
3
4
const ENGINE_RELOAD_GUARD = 'malice-engine-reload';
5
6
export const engineStale = writable(false);
7
export const engineRecovered = writable(0);
8
9
function reloadWhenHidden(): void {
10
  if (document.visibilityState !== 'hidden') return;
11
  const last = Number(sessionStorage.getItem(ENGINE_RELOAD_GUARD)) || null;
12
  const now = Date.now();
13
  if (!mayAutoReload(now, last)) return;
14
  sessionStorage.setItem(ENGINE_RELOAD_GUARD, String(now));
15
  window.location.reload();
16
}
17
18
export function markEngineStale(): void {
19
  engineStale.set(true);
20
  document.addEventListener('visibilitychange', reloadWhenHidden);
21
  reloadWhenHidden();
22
}