atagen

malice

public
Star0
Watch0
e72926bcca9a49b5dce29970ae99748c32cac9f5
2
ssh://brewery@pls.lobotomise.me:33/atagen/malice.git

Blame: web/src/lib/engine-state.ts

d9be72fdb393atagen2026-10-26 09:23 UTC1
import { writable } from 'svelte/store';
d9be72fdb393atagen2026-10-26 09:23 UTC2
import { mayAutoReload } from './engine-build';
d9be72fdb393atagen2026-10-26 09:23 UTC3
d9be72fdb393atagen2026-10-26 09:23 UTC4
const ENGINE_RELOAD_GUARD = 'malice-engine-reload';
d9be72fdb393atagen2026-10-26 09:23 UTC5
d9be72fdb393atagen2026-10-26 09:23 UTC6
export const engineStale = writable(false);
d9be72fdb393atagen2026-10-26 09:23 UTC7
export const engineRecovered = writable(0);
d9be72fdb393atagen2026-10-26 09:23 UTC8
d9be72fdb393atagen2026-10-26 09:23 UTC9
function reloadWhenHidden(): void {
d9be72fdb393atagen2026-10-26 09:23 UTC10
  if (document.visibilityState !== 'hidden') return;
d9be72fdb393atagen2026-10-26 09:23 UTC11
  const last = Number(sessionStorage.getItem(ENGINE_RELOAD_GUARD)) || null;
d9be72fdb393atagen2026-10-26 09:23 UTC12
  const now = Date.now();
d9be72fdb393atagen2026-10-26 09:23 UTC13
  if (!mayAutoReload(now, last)) return;
d9be72fdb393atagen2026-10-26 09:23 UTC14
  sessionStorage.setItem(ENGINE_RELOAD_GUARD, String(now));
d9be72fdb393atagen2026-10-26 09:23 UTC15
  window.location.reload();
d9be72fdb393atagen2026-10-26 09:23 UTC16
}
d9be72fdb393atagen2026-10-26 09:23 UTC17
d9be72fdb393atagen2026-10-26 09:23 UTC18
export function markEngineStale(): void {
d9be72fdb393atagen2026-10-26 09:23 UTC19
  engineStale.set(true);
d9be72fdb393atagen2026-10-26 09:23 UTC20
  document.addEventListener('visibilitychange', reloadWhenHidden);
d9be72fdb393atagen2026-10-26 09:23 UTC21
  reloadWhenHidden();
d9be72fdb393atagen2026-10-26 09:23 UTC22
}