[feat] start hidden + hidden on close + basic tray function
This commit is contained in:
@@ -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>
|
||||
)
|
||||
}
|
||||
|
||||
@@ -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}>
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
Reference in New Issue
Block a user