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)