2025-03-20 01:46:54 +08:00
|
|
|
|
import { store } from "@tauri-store/valtio"
|
2025-03-17 11:48:30 +08:00
|
|
|
|
import { useSnapshot } from "valtio"
|
2025-03-20 01:46:54 +08:00
|
|
|
|
import { DEFAULT_STORE_CONFIG } from "./config"
|
2025-03-26 03:00:18 +08:00
|
|
|
|
import { enable, disable } from "@tauri-apps/plugin-autostart"
|
|
|
|
|
|
import { LazyStore } from '@tauri-apps/plugin-store';
|
2025-03-12 11:22:32 +08:00
|
|
|
|
|
|
|
|
|
|
const defaultValue = {
|
|
|
|
|
|
version: "0.0.1",
|
|
|
|
|
|
hasUpdate: false,
|
2025-11-08 18:09:35 +08:00
|
|
|
|
latestVersion: "", // 最新版本号
|
2025-03-12 11:22:32 +08:00
|
|
|
|
inited: false,
|
|
|
|
|
|
notice: "",
|
2025-11-08 18:09:35 +08:00
|
|
|
|
useMirror: true, // 默认使用镜像源(CDN 加速)
|
|
|
|
|
|
includePrerelease: false, // 默认不包含预发布版本
|
2025-03-23 23:55:15 +08:00
|
|
|
|
autoStart: false,
|
2025-03-26 03:00:18 +08:00
|
|
|
|
startHidden: false,
|
|
|
|
|
|
hiddenOnClose: false,
|
2025-11-06 03:55:37 +08:00
|
|
|
|
steamUsersViewMode: "list-large" as "card" | "list" | "list-large",
|
2024-11-11 17:17:08 +08:00
|
|
|
|
}
|
2024-09-21 02:25:23 +08:00
|
|
|
|
|
2025-03-12 22:20:06 +08:00
|
|
|
|
export const appStore = store("app", { ...defaultValue }, DEFAULT_STORE_CONFIG)
|
2025-03-12 11:22:32 +08:00
|
|
|
|
|
2025-03-17 11:48:30 +08:00
|
|
|
|
export const useAppStore = () => {
|
|
|
|
|
|
void appStore.start
|
|
|
|
|
|
const state = useSnapshot(appStore.state)
|
|
|
|
|
|
|
|
|
|
|
|
return {
|
|
|
|
|
|
state,
|
2025-03-21 15:06:41 +08:00
|
|
|
|
store: appStore,
|
2025-03-17 11:48:30 +08:00
|
|
|
|
setVersion,
|
|
|
|
|
|
setHasUpdate,
|
2025-11-08 18:09:35 +08:00
|
|
|
|
setLatestVersion,
|
2025-03-17 11:48:30 +08:00
|
|
|
|
setInited,
|
|
|
|
|
|
setNotice,
|
|
|
|
|
|
setUseMirror,
|
2025-11-08 18:09:35 +08:00
|
|
|
|
setIncludePrerelease,
|
2025-03-23 23:55:15 +08:00
|
|
|
|
setAutoStart,
|
2025-03-26 03:00:18 +08:00
|
|
|
|
setStartHidden,
|
|
|
|
|
|
setHiddenOnClose,
|
2025-11-06 03:55:37 +08:00
|
|
|
|
setSteamUsersViewMode,
|
2025-03-17 11:48:30 +08:00
|
|
|
|
resetAppStore,
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-11-05 02:35:35 +08:00
|
|
|
|
const launchStore = new LazyStore('cstb.json', { autoSave: true, defaults: defaultValue });
|
2025-03-27 00:58:18 +08:00
|
|
|
|
if (typeof window !== 'undefined') void launchStore.save()
|
2025-03-26 03:00:18 +08:00
|
|
|
|
|
2025-03-17 11:48:30 +08:00
|
|
|
|
const setVersion = (version: string) => {
|
2025-03-12 22:20:06 +08:00
|
|
|
|
appStore.state.version = version
|
|
|
|
|
|
}
|
2025-03-17 11:48:30 +08:00
|
|
|
|
const setHasUpdate = (hasUpdate: boolean) => {
|
2025-03-12 22:20:06 +08:00
|
|
|
|
appStore.state.hasUpdate = hasUpdate
|
|
|
|
|
|
}
|
2025-11-08 18:09:35 +08:00
|
|
|
|
const setLatestVersion = (latestVersion: string) => {
|
|
|
|
|
|
appStore.state.latestVersion = latestVersion
|
|
|
|
|
|
}
|
2025-03-17 11:48:30 +08:00
|
|
|
|
const setInited = (inited: boolean) => {
|
2025-03-12 22:20:06 +08:00
|
|
|
|
appStore.state.inited = inited
|
|
|
|
|
|
}
|
2025-03-17 11:48:30 +08:00
|
|
|
|
const setNotice = (notice: string) => {
|
2025-03-12 22:20:06 +08:00
|
|
|
|
appStore.state.notice = notice
|
|
|
|
|
|
}
|
2025-03-17 11:48:30 +08:00
|
|
|
|
const setUseMirror = (useMirror: boolean) => {
|
2025-03-12 22:20:06 +08:00
|
|
|
|
appStore.state.useMirror = useMirror
|
|
|
|
|
|
}
|
2025-11-08 18:09:35 +08:00
|
|
|
|
const setIncludePrerelease = (includePrerelease: boolean) => {
|
|
|
|
|
|
appStore.state.includePrerelease = includePrerelease
|
|
|
|
|
|
}
|
2025-03-12 11:22:32 +08:00
|
|
|
|
|
2025-03-23 23:55:15 +08:00
|
|
|
|
const setAutoStart = (autoStart: boolean) => {
|
|
|
|
|
|
if (autoStart) {
|
|
|
|
|
|
void enable()
|
|
|
|
|
|
} else {
|
|
|
|
|
|
void disable()
|
|
|
|
|
|
}
|
|
|
|
|
|
appStore.state.autoStart = autoStart
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-03-26 03:00:18 +08:00
|
|
|
|
// 同步到 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;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-11-06 03:55:37 +08:00
|
|
|
|
const setSteamUsersViewMode = (viewMode: "card" | "list" | "list-large") => {
|
|
|
|
|
|
appStore.state.steamUsersViewMode = viewMode
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-03-17 11:48:30 +08:00
|
|
|
|
const resetAppStore = () => {
|
2025-03-12 11:22:32 +08:00
|
|
|
|
setVersion(defaultValue.version)
|
|
|
|
|
|
setHasUpdate(defaultValue.hasUpdate)
|
2025-11-08 18:09:35 +08:00
|
|
|
|
setLatestVersion(defaultValue.latestVersion)
|
2025-03-12 11:22:32 +08:00
|
|
|
|
setInited(defaultValue.inited)
|
|
|
|
|
|
setNotice(defaultValue.notice)
|
|
|
|
|
|
setUseMirror(defaultValue.useMirror)
|
2025-11-08 18:09:35 +08:00
|
|
|
|
setIncludePrerelease(defaultValue.includePrerelease)
|
2025-03-23 23:55:15 +08:00
|
|
|
|
setAutoStart(defaultValue.autoStart)
|
2025-03-26 03:00:18 +08:00
|
|
|
|
void setStartHidden(defaultValue.startHidden)
|
|
|
|
|
|
setHiddenOnClose(defaultValue.hiddenOnClose)
|
2025-11-06 03:55:37 +08:00
|
|
|
|
setSteamUsersViewMode(defaultValue.steamUsersViewMode)
|
2025-03-17 11:48:30 +08:00
|
|
|
|
}
|