20 lines
715 B
TypeScript
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; }
|
|
};
|