fooder-app/src/lib/offline/network.svelte.ts
2026-04-16 11:37:28 +02:00

20 lines
715 B
TypeScript

let _online = $state(typeof navigator !== 'undefined' ? navigator.onLine : true);
let _pendingCount = $state(0);
let _syncing = $state(false);
if (typeof window !== 'undefined') {
window.addEventListener('online', () => { _online = true; });
window.addEventListener('offline', () => { _online = false; });
}
export const network = {
get online() { return _online; },
get pendingCount() { return _pendingCount; },
get syncing() { return _syncing; },
incrementPending() { _pendingCount++; },
decrementPending() { _pendingCount = Math.max(0, _pendingCount - 1); },
setPendingCount(n: number) { _pendingCount = n; },
setSyncing(v: boolean) { _syncing = v; },
setOffline() { _online = false; }
};