diff --git a/src/app/(main)/preference/general/page.tsx b/src/app/(main)/preference/general/page.tsx index 77a757b..e10b8ff 100644 --- a/src/app/(main)/preference/general/page.tsx +++ b/src/app/(main)/preference/general/page.tsx @@ -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 (
@@ -18,17 +13,11 @@ export default function Page() {

是否有更新:{app.state.hasUpdate ? "有" : "无"}

是否使用镜像源:{app.state.useMirror ? "是" : "否"}

{ - 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 ? "开" : "关"}
) diff --git a/src/store/app.ts b/src/store/app.ts index b4b48ca..ed84702 100644 --- a/src/store/app.ts +++ b/src/store/app.ts @@ -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) } \ No newline at end of file