From 53ce079dff8e91a4c8879dcf18e945b7e842eb47 Mon Sep 17 00:00:00 2001 From: Corentin Thomasset Date: Wed, 1 Mar 2023 21:46:23 +0100 Subject: [PATCH] refactor(pwa): prompt for pwa update --- .eslintrc.cjs | 1 + env.d.ts | 33 +++++++++++++++++++++++++++++++++ src/App.vue | 12 ++++++++---- src/components/ReloadPrompt.tsx | 32 ++++++++++++++++++++++++++++++++ src/themes.ts | 4 ++++ tsconfig.app.json | 2 +- vite.config.ts | 2 +- 7 files changed, 80 insertions(+), 6 deletions(-) create mode 100644 src/components/ReloadPrompt.tsx diff --git a/.eslintrc.cjs b/.eslintrc.cjs index c9e89555..990998b3 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -32,5 +32,6 @@ module.exports = { tsx: 'never', }, ], + 'import/no-unresolved': ['error', { ignore: ['^virtual:'] }], }, }; diff --git a/env.d.ts b/env.d.ts index 18bdc8fe..23280061 100644 --- a/env.d.ts +++ b/env.d.ts @@ -1,5 +1,38 @@ /// /// +/// + +declare module 'virtual:pwa-register/vue' { + // @ts-expect-error ignore when vue is not installed + import type { Ref } from 'vue'; + + export interface RegisterSWOptions { + immediate?: boolean; + onNeedRefresh?: () => void; + onOfflineReady?: () => void; + /** + * Called only if `onRegisteredSW` is not provided. + * + * @deprecated Use `onRegisteredSW` instead. + * @param registration The service worker registration if available. + */ + onRegistered?: (registration: ServiceWorkerRegistration | undefined) => void; + /** + * Called once the service worker is registered (requires version `0.12.8+`). + * + * @param swScriptUrl The service worker script url. + * @param registration The service worker registration if available. + */ + onRegisteredSW?: (swScriptUrl: string, registration: ServiceWorkerRegistration | undefined) => void; + onRegisterError?: (error: any) => void; + } + + export function useRegisterSW(options?: RegisterSWOptions): { + needRefresh: Ref; + offlineReady: Ref; + updateServiceWorker: (reloadPage?: boolean) => Promise; + }; +} interface ImportMetaEnv { VITE_PLAUSIBLE_API_HOST: string; diff --git a/src/App.vue b/src/App.vue index 4c83a13f..10a6d0ce 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,10 +1,11 @@