mirror of
https://github.com/CorentinTh/it-tools.git
synced 2025-04-20 06:55:06 -04:00
revert(pwa): fallback to autoUpdate
This commit is contained in:
parent
400654b6b1
commit
ad202bd372
5 changed files with 2 additions and 89 deletions
33
env.d.ts
vendored
33
env.d.ts
vendored
|
@ -1,38 +1,5 @@
|
||||||
/// <reference types="vite/client" />
|
/// <reference types="vite/client" />
|
||||||
/// <reference types="vite-svg-loader" />
|
/// <reference types="vite-svg-loader" />
|
||||||
/// <reference types="vite-plugin-pwa/client" />
|
|
||||||
|
|
||||||
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<boolean>;
|
|
||||||
offlineReady: Ref<boolean>;
|
|
||||||
updateServiceWorker: (reloadPage?: boolean) => Promise<void>;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
interface ImportMetaEnv {
|
interface ImportMetaEnv {
|
||||||
VITE_PLAUSIBLE_API_HOST: string;
|
VITE_PLAUSIBLE_API_HOST: string;
|
||||||
|
|
|
@ -5,7 +5,6 @@ import { darkTheme, NGlobalStyle, NMessageProvider, NNotificationProvider } from
|
||||||
import { darkThemeOverrides, lightThemeOverrides } from './themes';
|
import { darkThemeOverrides, lightThemeOverrides } from './themes';
|
||||||
import { layouts } from './layouts';
|
import { layouts } from './layouts';
|
||||||
import { useStyleStore } from './stores/style.store';
|
import { useStyleStore } from './stores/style.store';
|
||||||
import ReloadPrompt from './components/ReloadPrompt';
|
|
||||||
|
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
const layout = computed(() => route?.meta?.layout ?? layouts.base);
|
const layout = computed(() => route?.meta?.layout ?? layouts.base);
|
||||||
|
@ -20,7 +19,6 @@ const themeOverrides = computed(() => (styleStore.isDarkTheme ? darkThemeOverrid
|
||||||
<n-global-style />
|
<n-global-style />
|
||||||
<n-message-provider placement="bottom">
|
<n-message-provider placement="bottom">
|
||||||
<n-notification-provider placement="bottom-right">
|
<n-notification-provider placement="bottom-right">
|
||||||
<reload-prompt />
|
|
||||||
<component :is="layout">
|
<component :is="layout">
|
||||||
<router-view />
|
<router-view />
|
||||||
</component>
|
</component>
|
||||||
|
|
|
@ -1,52 +0,0 @@
|
||||||
/* eslint-disable vue/one-component-per-file */
|
|
||||||
import { useRegisterSW } from 'virtual:pwa-register/vue';
|
|
||||||
import { useNotification, type NotificationReactive } from 'naive-ui';
|
|
||||||
import { defineComponent } from 'vue';
|
|
||||||
import { whenever } from '@vueuse/core';
|
|
||||||
|
|
||||||
export default defineComponent({
|
|
||||||
setup() {
|
|
||||||
const notificationBuilder = useNotification();
|
|
||||||
|
|
||||||
const { needRefresh, offlineReady, updateServiceWorker } = useRegisterSW();
|
|
||||||
|
|
||||||
let notification: NotificationReactive | null = null;
|
|
||||||
|
|
||||||
const onUpdateClicked = () => {
|
|
||||||
if (notification) {
|
|
||||||
notification.action = () => (
|
|
||||||
<n-button loading type="primary" secondary>
|
|
||||||
Reloading
|
|
||||||
</n-button>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
updateServiceWorker();
|
|
||||||
};
|
|
||||||
|
|
||||||
whenever(
|
|
||||||
needRefresh,
|
|
||||||
() => {
|
|
||||||
notification = notificationBuilder.create({
|
|
||||||
title: 'A new version is out!',
|
|
||||||
content: 'Update to get the latest version of it-tools',
|
|
||||||
closable: true,
|
|
||||||
onClose: () => {
|
|
||||||
needRefresh.value = false;
|
|
||||||
return true;
|
|
||||||
},
|
|
||||||
action: () => (
|
|
||||||
<n-button onClick={onUpdateClicked} type="primary" secondary>
|
|
||||||
Reload
|
|
||||||
</n-button>
|
|
||||||
),
|
|
||||||
});
|
|
||||||
},
|
|
||||||
{ immediate: true },
|
|
||||||
);
|
|
||||||
|
|
||||||
whenever(offlineReady, () => notification?.destroy(), { immediate: true });
|
|
||||||
|
|
||||||
return () => '';
|
|
||||||
},
|
|
||||||
});
|
|
|
@ -9,6 +9,6 @@
|
||||||
"paths": {
|
"paths": {
|
||||||
"@/*": ["./src/*"]
|
"@/*": ["./src/*"]
|
||||||
},
|
},
|
||||||
"types": ["naive-ui/volar", "vite-plugin-pwa/client"]
|
"types": ["naive-ui/volar"]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,7 @@ export default defineConfig({
|
||||||
markdown(),
|
markdown(),
|
||||||
svgLoader(),
|
svgLoader(),
|
||||||
VitePWA({
|
VitePWA({
|
||||||
registerType: 'prompt',
|
registerType: 'autoUpdate',
|
||||||
strategies: 'generateSW',
|
strategies: 'generateSW',
|
||||||
manifest: {
|
manifest: {
|
||||||
name: 'IT Tools',
|
name: 'IT Tools',
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue