From 688be14e11bdffb0093667d88323931dfc72a1e1 Mon Sep 17 00:00:00 2001 From: kwaroran Date: Fri, 14 Jun 2024 23:40:28 +0900 Subject: [PATCH] feat: add updater --- src-tauri/tauri.conf.json | 2 +- src/ts/storage/globalApi.ts | 4 +-- src/ts/update.ts | 55 ++++++++++++------------------------- 3 files changed, 21 insertions(+), 40 deletions(-) diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index 6e1a8276..66591de5 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -97,7 +97,7 @@ }, "updater": { "active": true, - "endpoints": ["https://sv.risuai.xyz/hub/update"], + "endpoints": ["https://github.com/kwaroran/RisuAI/releases/latest/download/latest.json"], "dialog": false, "pubkey": "dW50cnVzdGVkIGNvbW1lbnQ6IG1pbmlzaWduIHB1YmxpYyBrZXk6IDU2ODMzOTIxMDMxOTY1MUYKUldRZlpSa0RJVG1EVmx5Vm1WYlhFM29HMEJrUTRrYmg5dDQ0RFpvdUphNDdxQmVlWXJHVmV5TEYK", "windows": { diff --git a/src/ts/storage/globalApi.ts b/src/ts/storage/globalApi.ts index 3af09fc3..391bfe09 100644 --- a/src/ts/storage/globalApi.ts +++ b/src/ts/storage/globalApi.ts @@ -7,7 +7,7 @@ import { get } from "svelte/store"; import {open} from '@tauri-apps/api/shell' import { DataBase, loadedStore, setDatabase, type Database, defaultSdDataFunc } from "./database"; import { appWindow } from "@tauri-apps/api/window"; -import { checkUpdate } from "../update"; +import { checkRisuUpdate } from "../update"; import { botMakerMode, selectedCharID } from "../stores"; import { Body, ResponseType, fetch as TauriFetch } from "@tauri-apps/api/http"; import { loadPlugins } from "../plugins/plugins"; @@ -419,7 +419,7 @@ export async function loadData() { throw "Your save file is corrupted" } } - await checkUpdate() + await checkRisuUpdate() await changeFullscreen() } diff --git a/src/ts/update.ts b/src/ts/update.ts index bec07ff7..ed94bd8d 100644 --- a/src/ts/update.ts +++ b/src/ts/update.ts @@ -1,49 +1,30 @@ -import { fetch } from "@tauri-apps/api/http"; -import { DataBase, appVer, setDatabase } from "./storage/database"; -import { alertConfirm, alertError, alertMd } from "./alert"; +import { alertConfirm, alertWait } from "./alert"; import { language } from "../lang"; -import { get } from "svelte/store"; -import {open} from '@tauri-apps/api/shell' import { Capacitor } from "@capacitor/core"; +import { + checkUpdate, + installUpdate, +} from '@tauri-apps/api/updater' +import { relaunch } from '@tauri-apps/api/process' + +export async function checkRisuUpdate(){ + + if(Capacitor.isNativePlatform()){ + return + } -export async function checkUpdate(){ try { - - if(Capacitor.isNativePlatform()){ - return - } - - let db = get(DataBase) - const da = await fetch('https://raw.githubusercontent.com/kwaroran/RisuAI-release/main/version.json') - //@ts-ignore - const v:string = da.data.version - if(!v){ - return - } - if(v === db.lastup){ - return - } - const nextVer = versionStringToNumber(v) - if(isNaN(nextVer) || (!nextVer)){ - return - } - const appVerNum = versionStringToNumber(appVer) - - if(appVerNum < nextVer){ + const checked = await checkUpdate() + if(checked.shouldUpdate){ const conf = await alertConfirm(language.newVersion) if(conf){ - open("https://risuai.net/?page=download") - } - else{ - db = get(DataBase) - db.lastup = v - setDatabase(db) + alertWait(`Updating to ${checked.manifest.version}...`) + await installUpdate() + await relaunch() } } - } catch (error) { - alertError(error) - return + } }