41 lines
1.4 KiB
TypeScript
41 lines
1.4 KiB
TypeScript
// web-admin/src/utils/check-app-update.ts
|
|
import { startAppUpdateChecker } from './app-update'
|
|
|
|
/** 生产环境检查 dist/version.json,发现新 buildId 后强制刷新。 */
|
|
export function startAppUpdateCheck(): () => void {
|
|
return startAppUpdateChecker({
|
|
isProd: import.meta.env.PROD,
|
|
localBuildId: __APP_BUILD_ID__,
|
|
localVersion: __APP_VERSION__,
|
|
baseUrl: import.meta.env.BASE_URL,
|
|
now: () => Date.now(),
|
|
fetchRemote: async (url) => {
|
|
const res = await fetch(url, { cache: 'no-store' })
|
|
if (!res.ok) throw new Error(String(res.status))
|
|
return res.json()
|
|
},
|
|
onReload: () => {
|
|
location.reload()
|
|
},
|
|
alertUpdate: async (message) => {
|
|
await ElMessageBox.alert(message, '发现新版本', {
|
|
confirmButtonText: '立即刷新',
|
|
showClose: false,
|
|
closeOnClickModal: false,
|
|
closeOnPressEscape: false,
|
|
showCancelButton: false,
|
|
dangerouslyUseHTMLString: true
|
|
})
|
|
},
|
|
setInterval: (fn, ms) => window.setInterval(fn, ms),
|
|
clearInterval: (id) => window.clearInterval(id),
|
|
subscribeVisible: (handler) => {
|
|
const listener = () => {
|
|
if (document.visibilityState === 'visible') handler()
|
|
}
|
|
document.addEventListener('visibilitychange', listener)
|
|
return () => document.removeEventListener('visibilitychange', listener)
|
|
}
|
|
})
|
|
}
|