Files
shanxia2.0/web-admin/src/utils/check-app-update.ts
T

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)
}
})
}