import NavBar from '@/views/components/NavBar' import { Button, Typography, useColorScheme } from '@mui/joy' import Tracker from '@openreplay/tracker' import { useCallback, useEffect } from 'react' import { Outlet, useNavigate } from 'react-router-dom' import { useRegisterSW } from 'virtual:pwa-register/react' import { registerCapacitorListeners } from './CapacitorListener' import PageTransition from './components/animations/PageTransition' import { AuthProvider } from './hooks/useAuth.jsx' import { ImpersonateUserProvider } from './contexts/ImpersonateUserContext' import SSEProvider from './contexts/SSEContext' import { useNotification } from './service/NotificationProvider' import NetworkBanner from './views/components/NetworkBanner' const add = className => { document.getElementById('root').classList.add(className) } const remove = className => { document.getElementById('root').classList.remove(className) } // TODO: Update the interval to at 60 minutes const intervalMS = 5 * 60 * 1000 // 5 minutes const startOpenReplay = () => { if (!import.meta.env.VITE_OPENREPLAY_PROJECT_KEY) return const tracker = new Tracker({ projectKey: import.meta.env.VITE_OPENREPLAY_PROJECT_KEY, }) tracker.start() } const AppContent = () => { const { showNotification } = useNotification() const { needRefresh: [needRefresh, setNeedRefresh], updateServiceWorker, } = useRegisterSW({ onRegistered(r) { console.log('SW Registered: ' + r) r && setInterval(() => { r.update() }, intervalMS) }, onRegisterError(error) { console.log('SW registration error', error) }, }) useEffect(() => { if (needRefresh) { showNotification({ type: 'custom', component: (