mirror of
https://github.com/BTMuli/TeyvatGuide.git
synced 2026-05-08 00:24:06 +08:00
🐛 完善版本更新检测逻辑
This commit is contained in:
@@ -84,6 +84,7 @@ import { invoke } from "@tauri-apps/api/core";
|
||||
import { openUrl } from "@tauri-apps/plugin-opener";
|
||||
import getLrv from "@utils/Github.js";
|
||||
import TGLogger from "@utils/TGLogger.js";
|
||||
import { compareVersions } from "@utils/toolFunc.js";
|
||||
import { storeToRefs } from "pinia";
|
||||
import { defineComponent, onMounted, ref, shallowRef, watch } from "vue";
|
||||
|
||||
@@ -221,11 +222,17 @@ async function checkAppUpdate(): Promise<void> {
|
||||
const versionApp = await getVersion();
|
||||
const versionCheck = await getLrv();
|
||||
if (versionCheck === "0") return;
|
||||
if (versionCheck === versionApp) {
|
||||
const versionCompare = compareVersions(versionApp, versionCheck);
|
||||
if (versionCompare === 0) {
|
||||
await TGLogger.Info(`[Home][CheckAppUpdate]版本号一致:${versionCheck}`);
|
||||
lastUcts.value = nowTs;
|
||||
return;
|
||||
}
|
||||
if (versionCompare > 0) {
|
||||
await TGLogger.Info(`[Home][CheckAppUpdate]当前版本${versionApp}比远程版本${versionCheck}更新`);
|
||||
lastUcts.value = nowTs;
|
||||
return;
|
||||
}
|
||||
await TGLogger.Info(`[Home][CheckAppUpdate]检测到新版本:${versionCheck}`);
|
||||
const check = await showDialog.checkF({
|
||||
title: "检测到新版本",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* 一些工具函数
|
||||
* @since Beta v0.9.5
|
||||
* @since Beta v0.10.2
|
||||
*/
|
||||
|
||||
import { tz } from "@date-fns/tz";
|
||||
@@ -392,6 +392,30 @@ export function validEmail(email: string): boolean {
|
||||
return emailRegex.test(email);
|
||||
}
|
||||
|
||||
/**
|
||||
* 比较两个语义化版本号
|
||||
* @since Beta v0.10.2
|
||||
* @param v1 - 版本号1(当前应用版本)
|
||||
* @param v2 - 版本号2(远程最新版本)
|
||||
* @returns 比较结果:1表示v1更新,-1表示v2更新,0表示相同
|
||||
* @example compareVersions("0.10.1", "0.10.0") // 返回 1
|
||||
* @example compareVersions("0.9.9", "0.10.0") // 返回 -1
|
||||
* @example compareVersions("0.10.0", "0.10.0") // 返回 0
|
||||
*/
|
||||
export function compareVersions(v1: string, v2: string): number {
|
||||
const parts1 = v1.split(".").map(Number);
|
||||
const parts2 = v2.split(".").map(Number);
|
||||
const maxLength = Math.max(parts1.length, parts2.length);
|
||||
|
||||
for (let i = 0; i < maxLength; i++) {
|
||||
const num1 = parts1[i] || 0;
|
||||
const num2 = parts2[i] || 0;
|
||||
if (num1 > num2) return 1;
|
||||
if (num1 < num2) return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 传入时间字符串跟对应时区,转成utc8时间字符串
|
||||
* @since Beta v0.9.5
|
||||
|
||||
Reference in New Issue
Block a user