[fix] auto launch persist state

This commit is contained in:
Purp1e
2025-03-23 23:55:15 +08:00
parent a3c7e688bb
commit e47e3d634b
2 changed files with 18 additions and 16 deletions

View File

@@ -1,16 +1,11 @@
"use client"
import { useAppStore } from "@/store/app"
import { Switch } from "@heroui/react"
import { enable, isEnabled, disable } from "@tauri-apps/plugin-autostart"
import { useEffect, useState } from "react"
import { isEnabled } from "@tauri-apps/plugin-autostart"
import { useEffect } from "react"
export default function Page() {
const app = useAppStore()
const [autoStartEnabled, setAutoStartEnabled] = useState(false)
useEffect(() => {
void isEnabled().then(setAutoStartEnabled)
}, [])
return (
<div className="flex flex-col items-start gap-3 pt-2 pb-1">
@@ -18,17 +13,11 @@ export default function Page() {
<p>{app.state.hasUpdate ? "有" : "无"}</p>
<p>使{app.state.useMirror ? "是" : "否"}</p>
<Switch
checked={autoStartEnabled}
isSelected={app.state.autoStart}
size="sm"
onChange={(e) => {
if (e.target.checked) {
void enable().then(() => setAutoStartEnabled(true))
} else {
void disable().then(() => setAutoStartEnabled(false))
}
}}
onChange={(e) => app.setAutoStart(e.target.checked)}
>
{app.state.autoStart ? "开" : "关"}
</Switch>
</div>
)

View File

@@ -1,6 +1,7 @@
import { store } from "@tauri-store/valtio"
import { useSnapshot } from "valtio"
import { DEFAULT_STORE_CONFIG } from "./config"
import { enable, isEnabled, disable } from "@tauri-apps/plugin-autostart"
const defaultValue = {
version: "0.0.1",
@@ -8,6 +9,7 @@ const defaultValue = {
inited: false,
notice: "",
useMirror: true,
autoStart: false,
}
export const appStore = store("app", { ...defaultValue }, DEFAULT_STORE_CONFIG)
@@ -24,6 +26,7 @@ export const useAppStore = () => {
setInited,
setNotice,
setUseMirror,
setAutoStart,
resetAppStore,
}
}
@@ -44,10 +47,20 @@ const setUseMirror = (useMirror: boolean) => {
appStore.state.useMirror = useMirror
}
const setAutoStart = (autoStart: boolean) => {
if (autoStart) {
void enable()
} else {
void disable()
}
appStore.state.autoStart = autoStart
}
const resetAppStore = () => {
setVersion(defaultValue.version)
setHasUpdate(defaultValue.hasUpdate)
setInited(defaultValue.inited)
setNotice(defaultValue.notice)
setUseMirror(defaultValue.useMirror)
setAutoStart(defaultValue.autoStart)
}