[fix] update restart process

This commit is contained in:
2025-11-08 20:56:02 +08:00
parent 11afc6dc9e
commit 4c151c3dd5
4 changed files with 87 additions and 52 deletions

View File

@@ -1,7 +1,16 @@
"use client"
import { useState, useEffect } from "react"
import { Button, CircularProgress, Modal, ModalContent, ModalHeader, ModalBody, ModalFooter, useDisclosure } from "@heroui/react"
import {
Button,
CircularProgress,
Modal,
ModalContent,
ModalHeader,
ModalBody,
ModalFooter,
useDisclosure,
} from "@heroui/react"
import { Download, Refresh, FileText, Close, Check } from "@icon-park/react"
import { invoke } from "@tauri-apps/api/core"
import { listen } from "@tauri-apps/api/event"
@@ -22,7 +31,11 @@ interface UpdateCheckerProps {
includePrerelease?: boolean
}
export function UpdateChecker({ useMirror = true, customEndpoint, includePrerelease = false }: UpdateCheckerProps) {
export function UpdateChecker({
useMirror = true,
customEndpoint,
includePrerelease = false,
}: UpdateCheckerProps) {
const app = useAppStore()
const [checking, setChecking] = useState(false)
const [downloading, setDownloading] = useState(false)
@@ -30,14 +43,18 @@ export function UpdateChecker({ useMirror = true, customEndpoint, includePrerele
const [downloadProgress, setDownloadProgress] = useState(0)
const [installerPath, setInstallerPath] = useState<string | null>(null)
const [downloadCompleted, setDownloadCompleted] = useState(false)
const { isOpen: isChangelogOpen, onOpen: onChangelogOpen, onOpenChange: onChangelogOpenChange } = useDisclosure()
const {
isOpen: isChangelogOpen,
onOpen: onChangelogOpen,
onOpenChange: onChangelogOpenChange,
} = useDisclosure()
// 监听下载进度事件
useEffect(() => {
const unlisten = listen<number>("update-download-progress", (event) => {
const progress = event.payload
setDownloadProgress(progress)
// 如果进度达到 100%,标记下载完成
if (progress === 100) {
setDownloading(false)
@@ -46,7 +63,7 @@ export function UpdateChecker({ useMirror = true, customEndpoint, includePrerele
})
return () => {
unlisten.then(fn => fn())
unlisten.then((fn) => fn())
}
}, [])
@@ -122,7 +139,7 @@ export function UpdateChecker({ useMirror = true, customEndpoint, includePrerele
setDownloadProgress(100)
setDownloading(false)
setDownloadCompleted(true)
addToast({
title: "下载完成",
description: "可以点击安装按钮进行安装",
@@ -182,8 +199,8 @@ export function UpdateChecker({ useMirror = true, customEndpoint, includePrerele
})
// 安装完成后,等待一小段时间确保安装程序完全退出
await new Promise(resolve => setTimeout(resolve, 500))
await new Promise((resolve) => setTimeout(resolve, 1500))
// 启动新版本
await relaunch()
} catch (error) {
@@ -267,9 +284,7 @@ export function UpdateChecker({ useMirror = true, customEndpoint, includePrerele
{downloadCompleted ? (
<>
<Check className="text-green-500 dark:text-green-400" size={14} />
<span className="text-xs text-green-500 dark:text-green-400">
</span>
<span className="text-xs text-green-500 dark:text-green-400"></span>
</>
) : (
<>

View File

@@ -32,6 +32,8 @@ export interface MemoryInfo {
}
export interface MonitorInfo {
manufacturer?: string
model?: string
name?: string
refresh_rate?: number // Hz
resolution_width?: number