diff --git a/src/App.svelte b/src/App.svelte index d24486b..d0e2447 100644 --- a/src/App.svelte +++ b/src/App.svelte @@ -1,62 +1,71 @@ +{#if needRefresh} + +{/if} +
- {#if page === 'main'} - - {:else if page === 'print'} - - {:else if page === 'scan'} - - {/if} + {#if page === 'main'} + + {:else if page === 'print'} + + {:else if page === 'scan'} + + {/if}
diff --git a/src/lib/common/hooks/useUpdateCheck.svelte.js b/src/lib/common/hooks/useUpdateCheck.svelte.js new file mode 100644 index 0000000..9765ab0 --- /dev/null +++ b/src/lib/common/hooks/useUpdateCheck.svelte.js @@ -0,0 +1,55 @@ +// lib/common/hooks/useUpdateCheck.svelte.js +let needRefresh = $state(false); +let updateServiceWorker = () => {}; + +try { + const { useRegisterSW } = await import('virtual:pwa-register/svelte'); + + const sw = useRegisterSW({ + onRegistered(registration) { + console.log('✅ Service Worker зарегистрирован:', registration); + + if (registration) { + setInterval(() => { + registration.update(); + }, 30 * 60 * 1000); + + document.addEventListener('visibilitychange', () => { + if (document.visibilityState === 'visible') { + registration.update(); + } + }); + } + }, + onRegisterError(error) { + console.error('❌ Ошибка регистрации SW:', error); + } + }); + + if (sw?.needRefresh) { + $effect(() => { + needRefresh = sw.needRefresh[0]; + }); + updateServiceWorker = sw.updateServiceWorker || (() => {}); + } +} catch (error) { + console.warn('⚠️ PWA update check не инициализирован (возможно, dev-режим):', error); + needRefresh = false; +} + +async function doUpdate() { + try { + await updateServiceWorker(true); + window.location.reload(); + } catch (error) { + console.error('Ошибка обновления:', error); + window.location.reload(); + } +} + +export function useUpdateCheck() { + return { + get needRefresh() { return needRefresh; }, + doUpdate + }; +} diff --git a/src/lib/common/ui/UpdateBanner.svelte b/src/lib/common/ui/UpdateBanner.svelte new file mode 100644 index 0000000..a5e0e88 --- /dev/null +++ b/src/lib/common/ui/UpdateBanner.svelte @@ -0,0 +1,139 @@ + + + +{#if !dismissed} +
+ +
+{/if} + + diff --git a/src/lib/pages/print/PrintUI.svelte b/src/lib/pages/print/PrintUI.svelte index 4284a73..627eb12 100644 --- a/src/lib/pages/print/PrintUI.svelte +++ b/src/lib/pages/print/PrintUI.svelte @@ -1,4 +1,4 @@ - +