import { writable } from 'svelte/store';
import { mayAutoReload } from './engine-build';

const ENGINE_RELOAD_GUARD = 'malice-engine-reload';

export const engineStale = writable(false);
export const engineRecovered = writable(0);

function reloadWhenHidden(): void {
  if (document.visibilityState !== 'hidden') return;
  const last = Number(sessionStorage.getItem(ENGINE_RELOAD_GUARD)) || null;
  const now = Date.now();
  if (!mayAutoReload(now, last)) return;
  sessionStorage.setItem(ENGINE_RELOAD_GUARD, String(now));
  window.location.reload();
}

export function markEngineStale(): void {
  engineStale.set(true);
  document.addEventListener('visibilitychange', reloadWhenHidden);
  reloadWhenHidden();
}
