From d0270a3c9ef0b959368df811ee89bae5e0baa063 Mon Sep 17 00:00:00 2001 From: vchikalkin Date: Mon, 15 Jul 2024 15:08:11 +0300 Subject: [PATCH] web: add service worker for pwa install --- apps/web/hooks/worker.ts | 17 +++++++++++++++++ apps/web/pages/_app.jsx | 2 ++ apps/web/public/sw.js | 4 ++++ 3 files changed, 23 insertions(+) create mode 100644 apps/web/hooks/worker.ts create mode 100644 apps/web/public/sw.js diff --git a/apps/web/hooks/worker.ts b/apps/web/hooks/worker.ts new file mode 100644 index 0000000..6020fe9 --- /dev/null +++ b/apps/web/hooks/worker.ts @@ -0,0 +1,17 @@ +/* eslint-disable no-console */ +import { useEffect } from 'react'; + +export function useServiceWorker() { + useEffect(() => { + if ('serviceWorker' in navigator) { + navigator.serviceWorker + .register('/sw.js') + .then((registration) => { + console.log('Service Worker registered with scope:', registration.scope); + }) + .catch((error) => { + console.log('Service Worker registration failed:', error); + }); + } + }, []); +} diff --git a/apps/web/pages/_app.jsx b/apps/web/pages/_app.jsx index e626399..4f18e48 100644 --- a/apps/web/pages/_app.jsx +++ b/apps/web/pages/_app.jsx @@ -8,6 +8,7 @@ import { Loading } from '@/Components/Common'; import Layout from '@/Components/Layout'; import { theme } from '@/config/ui'; import { usePageLoading } from '@/hooks'; +import { useServiceWorker } from '@/hooks/worker'; import StoreProvider from '@/stores/Provider'; import getColors from '@/styles/colors'; import { GlobalStyle } from '@/styles/global-style'; @@ -32,6 +33,7 @@ function App({ Component, pageProps }) { const queryClient = useMemo(() => initializeQueryClient(initialQueryState), [initialQueryState]); const { loading } = usePageLoading(); + useServiceWorker(); return ( diff --git a/apps/web/public/sw.js b/apps/web/public/sw.js new file mode 100644 index 0000000..2963725 --- /dev/null +++ b/apps/web/public/sw.js @@ -0,0 +1,4 @@ +self.addEventListener('install', () => { + self.skipWaiting(); +}); +self.addEventListener('fetch', () => {});