diff --git a/ui/src/App.tsx b/ui/src/App.tsx index 32be4b42..f9591273 100644 --- a/ui/src/App.tsx +++ b/ui/src/App.tsx @@ -7,9 +7,12 @@ import { store } from './store' import { DynamicRoutesProvider } from './routes/dynamicRoutesContext' import { ComponentProvider } from './contexts/ComponentContext' import ComponentRegistryProvider from './contexts/ComponentRegistryContext' +import { registerServiceWorker } from './views/version/swRegistration' const queryClient = new QueryClient() +registerServiceWorker() + function App() { return ( diff --git a/ui/src/views/version/UpdateNotifier.tsx b/ui/src/views/version/UpdateNotifier.tsx index e9543fbd..cee3297c 100644 --- a/ui/src/views/version/UpdateNotifier.tsx +++ b/ui/src/views/version/UpdateNotifier.tsx @@ -1,56 +1,65 @@ import { ROUTES_ENUM } from '@/routes/route.constant' import { useState, useEffect } from 'react' -import { useNavigate } from 'react-router-dom' import { HiOutlineRefresh, HiX } from 'react-icons/hi' -import { useStoreState, useStoreActions } from '@/store' +import { useStoreActions } from '@/store' const UpdateNotifier = () => { - const [lastUiVersion, setLastUiVersion] = useState('') const [updateAvailable, setUpdateAvailable] = useState(false) - const navigate = useNavigate() + const [newVersion, setNewVersion] = useState(null) - const { currentUiVersion } = useStoreState((s) => s.locale) const { setUiVersion } = useStoreActions((s) => s.locale) + // SW update olayını dinle useEffect(() => { - const checkVersion = async () => { + const handler = async () => { try { const res = await fetch('/version.json?ts=' + Date.now()) const data = await res.json() - const latestVersion = data?.releases?.[0]?.version - if (latestVersion && latestVersion !== currentUiVersion) { - setUpdateAvailable(true) - setLastUiVersion(latestVersion) + const latest = data?.releases?.[0]?.version + if (latest) { + setNewVersion(latest) } - } catch (err) { - console.error('Version check failed', err) + } catch { + console.warn('Yeni versiyon bilgisi alınamadı') } + setUpdateAvailable(true) } - checkVersion() - const interval = setInterval(checkVersion, 30000) // 30s’de bir kontrol - return () => clearInterval(interval) - }, [currentUiVersion]) + window.addEventListener('sw-update-available', handler) + return () => window.removeEventListener('sw-update-available', handler) + }, []) if (!updateAvailable) return null return ( -
+
-

Yeni güncelleme mevcut! (v{lastUiVersion})

+

+ Yeni güncelleme mevcut {newVersion && `(v${newVersion})`}! +

En son özellikler için sayfayı yenileyin.