[feat] start hidden + hidden on close + basic tray function

This commit is contained in:
Purp1e
2025-03-26 03:00:18 +08:00
parent e0a84a0570
commit ee03bf0160
20 changed files with 266 additions and 40 deletions

View File

@@ -17,6 +17,21 @@ export default function Page() {
>
{app.state.autoStart ? "开" : "关"}
</Switch>
<Switch
isSelected={app.state.startHidden}
size="sm"
onChange={(e) => app.setStartHidden(e.target.checked)}
>
{app.state.startHidden ? "开" : "关"}
</Switch>
{/* hiddenOnClose */}
<Switch
isSelected={app.state.hiddenOnClose}
size="sm"
onChange={(e) => app.setHiddenOnClose(e.target.checked)}
>
{app.state.hiddenOnClose ? "开" : "关"}
</Switch>
</div>
)
}

View File

@@ -11,8 +11,7 @@ import {
Refresh,
RocketOne,
Square,
SunOne,
SurprisedFaceWithOpenBigMouth,
SunOne
} from "@icon-park/react"
import { type Theme, getCurrentWindow } from "@tauri-apps/api/window"
import { /* relaunch, */ exit } from "@tauri-apps/plugin-process"
@@ -21,6 +20,7 @@ import { usePathname, useRouter } from "next/navigation"
import { saveAllNow } from "@tauri-store/valtio"
import { useSteamStore } from "@/store/steam"
import { Modal, ModalContent, ModalHeader, ModalBody, ModalFooter } from "@heroui/react"
import { window } from "@tauri-apps/api"
const Nav = () => {
const { theme, setTheme } = useTheme()
@@ -29,10 +29,12 @@ const Nav = () => {
await setTauriTheme(theme)
}
const app = useAppStore()
const close = async () => {
// (await window.hideOnClose) ? getCurrent().hide() : exit();
await saveAllNow()
await exit()
// await exit()
if (app.state.hiddenOnClose) window.getCurrentWindow().hide()
else exit()
}
const minimize = async () => {
@@ -52,8 +54,6 @@ const Nav = () => {
const router = useRouter()
const pathname = usePathname()
const app = useAppStore()
return (
<nav className="absolute top-0 right-0 flex flex-row h-16 gap-0.5 p-4" data-tauri-drag-region>
<Tooltip content="启动页确认设置" showArrow={true} delay={300}>

View File

@@ -1,7 +1,8 @@
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"
import { enable, disable } from "@tauri-apps/plugin-autostart"
import { LazyStore } from '@tauri-apps/plugin-store';
const defaultValue = {
version: "0.0.1",
@@ -10,6 +11,8 @@ const defaultValue = {
notice: "",
useMirror: true,
autoStart: false,
startHidden: false,
hiddenOnClose: false,
}
export const appStore = store("app", { ...defaultValue }, DEFAULT_STORE_CONFIG)
@@ -27,10 +30,15 @@ export const useAppStore = () => {
setNotice,
setUseMirror,
setAutoStart,
setStartHidden,
setHiddenOnClose,
resetAppStore,
}
}
const launchStore = new LazyStore('cstb.json', { autoSave: true });
void launchStore.save()
const setVersion = (version: string) => {
appStore.state.version = version
}
@@ -56,6 +64,17 @@ const setAutoStart = (autoStart: boolean) => {
appStore.state.autoStart = autoStart
}
// 同步到 launchStore 使 start hidden 生效
const setStartHidden = async (startHidden: boolean) => {
appStore.state.startHidden = startHidden;
await launchStore.set('hidden', startHidden);
await launchStore.save();
}
const setHiddenOnClose = (hiddenOnClose: boolean) => {
appStore.state.hiddenOnClose = hiddenOnClose;
}
const resetAppStore = () => {
setVersion(defaultValue.version)
setHasUpdate(defaultValue.hasUpdate)
@@ -63,4 +82,6 @@ const resetAppStore = () => {
setNotice(defaultValue.notice)
setUseMirror(defaultValue.useMirror)
setAutoStart(defaultValue.autoStart)
void setStartHidden(defaultValue.startHidden)
setHiddenOnClose(defaultValue.hiddenOnClose)
}