From e47e3d634b7f7002f1fe2b4615a5c3ad9661f3ed Mon Sep 17 00:00:00 2001
From: Purp1e <47248616+Purple-CSGO@users.noreply.github.com>
Date: Sun, 23 Mar 2025 23:55:15 +0800
Subject: [PATCH] [fix] auto launch persist state
---
src/app/(main)/preference/general/page.tsx | 21 +++++----------------
src/store/app.ts | 13 +++++++++++++
2 files changed, 18 insertions(+), 16 deletions(-)
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