web: add service worker for pwa install

This commit is contained in:
vchikalkin 2024-07-15 15:08:11 +03:00
parent 71fc44e7a6
commit d0270a3c9e
3 changed files with 23 additions and 0 deletions

17
apps/web/hooks/worker.ts Normal file
View File

@ -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);
});
}
}, []);
}

View File

@ -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 (
<ThemeProvider theme={theme}>

4
apps/web/public/sw.js Normal file
View File

@ -0,0 +1,4 @@
self.addEventListener('install', () => {
self.skipWaiting();
});
self.addEventListener('fetch', () => {});