From 9dd5a9c6d0ec7b56bf467e720689eb46d882e009 Mon Sep 17 00:00:00 2001 From: johndoe6345789 Date: Sun, 18 Jan 2026 18:02:34 +0000 Subject: [PATCH] refactor pwa message handler --- src/hooks/use-pwa.ts | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/hooks/use-pwa.ts b/src/hooks/use-pwa.ts index 3a09de4..ae8684f 100644 --- a/src/hooks/use-pwa.ts +++ b/src/hooks/use-pwa.ts @@ -69,6 +69,12 @@ export function usePWA() { setState(prev => ({ ...prev, isOnline: false })) } + const handleServiceWorkerMessage = (event: MessageEvent) => { + if (event.data && event.data.type === 'CACHE_CLEARED') { + window.location.reload() + } + } + window.addEventListener('beforeinstallprompt', handleBeforeInstallPrompt) window.addEventListener('appinstalled', handleAppInstalled) window.addEventListener('online', handleOnline) @@ -96,11 +102,7 @@ export function usePWA() { console.error('[PWA] Service Worker registration failed:', error) }) - navigator.serviceWorker.addEventListener('message', (event) => { - if (event.data && event.data.type === 'CACHE_CLEARED') { - window.location.reload() - } - }) + navigator.serviceWorker.addEventListener('message', handleServiceWorkerMessage) } return () => { @@ -108,6 +110,9 @@ export function usePWA() { window.removeEventListener('appinstalled', handleAppInstalled) window.removeEventListener('online', handleOnline) window.removeEventListener('offline', handleOffline) + if ('serviceWorker' in navigator) { + navigator.serviceWorker.removeEventListener('message', handleServiceWorkerMessage) + } } }, [])