This commit is contained in:
parent
17d7e52216
commit
d088f81345
@ -10,26 +10,33 @@ export function setupAppErrorHandle(app: App) {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Update check interval in milliseconds
|
||||||
|
const UPDATE_CHECK_INTERVAL = 3 * 60 * 1000;
|
||||||
|
|
||||||
export function setupAppVersionNotification() {
|
export function setupAppVersionNotification() {
|
||||||
const canAutoUpdateApp = import.meta.env.VITE_AUTOMATICALLY_DETECT_UPDATE === 'Y';
|
const canAutoUpdateApp = import.meta.env.VITE_AUTOMATICALLY_DETECT_UPDATE === 'Y';
|
||||||
|
|
||||||
if (!canAutoUpdateApp) return;
|
if (!canAutoUpdateApp) return;
|
||||||
|
|
||||||
let isShow = false;
|
let isShow = false;
|
||||||
|
let updateInterval: ReturnType<typeof setInterval> | undefined;
|
||||||
|
|
||||||
document.addEventListener('visibilitychange', async () => {
|
// Check if updates should be checked
|
||||||
const preConditions = [!isShow, document.visibilityState === 'visible', !import.meta.env.DEV];
|
const shouldCheckForUpdates = [!isShow, document.visibilityState === 'visible', !import.meta.env.DEV].every(Boolean);
|
||||||
|
|
||||||
if (!preConditions.every(Boolean)) return;
|
const checkForUpdates = async () => {
|
||||||
|
if (!shouldCheckForUpdates) return;
|
||||||
|
|
||||||
const buildTime = await getHtmlBuildTime();
|
const buildTime = await getHtmlBuildTime();
|
||||||
|
|
||||||
|
// If build time hasn't changed, no update is needed
|
||||||
if (buildTime === BUILD_TIME) {
|
if (buildTime === BUILD_TIME) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
isShow = true;
|
isShow = true;
|
||||||
|
|
||||||
|
// Show update notification
|
||||||
const n = window.$notification?.create({
|
const n = window.$notification?.create({
|
||||||
title: $t('system.updateTitle'),
|
title: $t('system.updateTitle'),
|
||||||
content: $t('system.updateContent'),
|
content: $t('system.updateContent'),
|
||||||
@ -60,7 +67,28 @@ export function setupAppVersionNotification() {
|
|||||||
isShow = false;
|
isShow = false;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
};
|
||||||
|
|
||||||
|
const startUpdateInterval = () => {
|
||||||
|
if (updateInterval) {
|
||||||
|
clearInterval(updateInterval);
|
||||||
|
}
|
||||||
|
updateInterval = setInterval(checkForUpdates, UPDATE_CHECK_INTERVAL);
|
||||||
|
};
|
||||||
|
|
||||||
|
// If updates should be checked, set up the visibility change listener and start the update interval
|
||||||
|
if (shouldCheckForUpdates) {
|
||||||
|
// Check for updates when the document is visible
|
||||||
|
document.addEventListener('visibilitychange', () => {
|
||||||
|
if (document.visibilityState === 'visible') {
|
||||||
|
checkForUpdates();
|
||||||
|
startUpdateInterval();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Start the update interval
|
||||||
|
startUpdateInterval();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async function getHtmlBuildTime() {
|
async function getHtmlBuildTime() {
|
||||||
|
Loading…
Reference in New Issue
Block a user