import { getLastBuildDate } from '@/utils/localStorage/app'; import { windowReload } from 'billd-utils'; import { useTip } from './use-tip'; export const useCheckUpdate = () => { function handleHtmlCheckUpdate(data: { htmlUrl: string; lastBuildDate: string; }) { return new Promise<{ shouldTip: boolean }>((resolve) => { const xhr = new XMLHttpRequest(); xhr.open('GET', data.htmlUrl, true); xhr.onreadystatechange = function () { try { if (this.readyState !== 4) return; if (this.status !== 200) return; // or whatever error handling you want const reg = /\('最后构建日期:', "(.+)"\)/; const res = reg.exec(this.responseText); if (res?.[1] !== data.lastBuildDate) { resolve({ shouldTip: true }); console.log('提示更新'); useTip({ content: '发现新内容可用,是否刷新页面?', confirmButtonText: '刷新', }) .then(() => { windowReload(); }) .catch(() => {}); } else { resolve({ shouldTip: false }); console.log('不提示更新'); } } catch (error) { console.error(error); } }; xhr.send(); }); } function checkUpdate(data: { htmlUrl: string }) { setInterval( async () => { const lastBuildDate = getLastBuildDate(); if (lastBuildDate) { const res = await handleHtmlCheckUpdate({ htmlUrl: data.htmlUrl, lastBuildDate, }); return res; } }, 1000 * 60 * 5 ); } return { checkUpdate }; };