mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-07-05 03:25:10 +08:00
22 lines
676 B
TypeScript
22 lines
676 B
TypeScript
import { useCallback, useSyncExternalStore } from 'react';
|
|
|
|
const getOnLineStatus = () =>
|
|
typeof navigator !== 'undefined' && typeof navigator.onLine === 'boolean'
|
|
? navigator.onLine
|
|
: true;
|
|
|
|
export function useSystemOnline(): boolean {
|
|
return useSyncExternalStore(
|
|
useCallback(onStoreChange => {
|
|
window.addEventListener('online', onStoreChange);
|
|
window.addEventListener('offline', onStoreChange);
|
|
return () => {
|
|
window.removeEventListener('online', onStoreChange);
|
|
window.removeEventListener('offline', onStoreChange);
|
|
};
|
|
}, []),
|
|
useCallback(() => getOnLineStatus(), []),
|
|
useCallback(() => true, [])
|
|
);
|
|
}
|