UPDATE: Add self update

This commit is contained in:
2025-07-26 20:59:35 +07:00
parent 95f8ed357d
commit 461dfd93ba
28 changed files with 597 additions and 173 deletions

View File

@@ -0,0 +1,38 @@
import useLauncherStore from "@/stores/launcherStore";
import { AppService, GitService } from "@bindings/firefly-launcher/internal";
import { toast } from "react-toastify";
import { sleep } from "./sleep";
export async function CheckUpdateLauncher() : Promise<{isUpdate: boolean, version: string}> {
let isUpdateLauncher = false
let version = ""
const [launcherCurrentOk, launcherCurrentVersion] = await AppService.GetCurrentLauncherVersion()
if (!launcherCurrentOk) {
toast.error("Launcher error: cannot get current version")
} else {
const [launcherNewOk, launcherNewVersion, launcherNewError] = await GitService.GetLatestLauncherVersion()
version = launcherCurrentVersion
if (launcherNewOk && launcherNewVersion && launcherNewVersion !== launcherCurrentVersion) {
isUpdateLauncher = true
version = launcherNewVersion
} else if (!launcherNewOk) {
toast.error("Launcher error: " + launcherNewError)
}
}
return { isUpdate: isUpdateLauncher, version: version }
}
export async function UpdateLauncher(launcherVersion: string) : Promise<void> {
const {setDownloadType } = useLauncherStore.getState()
setDownloadType("update:launcher:downloading")
const [ok, error] = await GitService.UpdateLauncherProgress(launcherVersion)
if (ok) {
setDownloadType("update:launcher:success")
} else {
toast.error(error)
setDownloadType("update:launcher:failed")
}
AppService.CloseAppAfterTimeout(5)
await sleep(5000)
}