[fix] update restart process
This commit is contained in:
@@ -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>
|
||||
</>
|
||||
) : (
|
||||
<>
|
||||
|
||||
@@ -32,6 +32,8 @@ export interface MemoryInfo {
|
||||
}
|
||||
|
||||
export interface MonitorInfo {
|
||||
manufacturer?: string
|
||||
model?: string
|
||||
name?: string
|
||||
refresh_rate?: number // Hz
|
||||
resolution_width?: number
|
||||
|
||||
Reference in New Issue
Block a user