diff --git a/islands/IsOnline.tsx b/islands/IsOnline.tsx index 6713993..0c9e7df 100644 --- a/islands/IsOnline.tsx +++ b/islands/IsOnline.tsx @@ -1,6 +1,5 @@ import { type Signal, useComputed, useSignal } from '@preact/signals' import { useEffect } from 'preact/hooks' -import { IS_BROWSER } from 'fresh/runtime' type NetworkConnection = { addEventListener: ( @@ -9,15 +8,15 @@ type NetworkConnection = { ) => void } +declare global { + interface Navigator { + connection?: NetworkConnection + } +} + export default function IsOnline( { online, offline }: { online?: string; offline: string }, ) { - if (!IS_BROWSER) { - return online - ? - : {online} - } - const status = useSignal(true) const displayed = useComputed(() => { if (status.value && online) { @@ -26,14 +25,12 @@ export default function IsOnline( if (status.value) { return } - return {offline} + return {offline} }) - const connection = 'connection' in navigator - ? navigator.connection as NetworkConnection - : null + useEffect(() => { openSocket(status) - connection?.addEventListener('change', () => { + navigator.connection?.addEventListener('change', () => { fetch('/api/serviceworker/is-online') .then(() => status.value = true) .catch(() => status.value = false)