import { getSystemConfig,setSystemKey,parseJson } from '@/system/config' import { RestartApp } from './goutil'; import { Dialog } from '@/system'; import { ElMessage } from 'element-plus' export async function checkUpdate() { const config = getSystemConfig(); const updateGiteeUrl = `${config.apiUrl}/system/updateInfo` const releaseRes = await fetch(updateGiteeUrl) if (!releaseRes.ok) return; const releaseData = await releaseRes.json() const versionTag = releaseData.version; if (!versionTag) return; if (versionTag <= config.version) return; const updateUrl = releaseData.url if (!updateUrl || updateUrl == '') return; const dialogRes: any = await Dialog.showMessageBox({ title: '更新提示', message: `发现新版本:${versionTag},是否更新?` }) //console.log(dialogRes) if (dialogRes.response !== -1) { return; } const { setProgress,dialogwin } = Dialog.showProcessDialog({ message: '正在更新', }); const upUrl = `${config.apiUrl}/system/update?url=${updateUrl}` const upRes = await fetch(upUrl) if (!upRes.ok) return; const reader: any = upRes.body?.getReader(); if (!reader) { ElMessage({ type: 'error', message: "the system has not stream!" }) } while (true) { const { done, value } = await reader.read(); if (done) { reader.releaseLock(); break; } const rawjson = new TextDecoder().decode(value); const json = parseJson(rawjson); console.log(json) if(json){ if(json.progress){ setProgress(json.progress) } if(json.updateCompleted){ dialogwin.close() ElMessage({ type: 'success', message: "update completed!" }) setSystemKey('version',versionTag) RestartApp() break; } } } }