aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/packages/ui-new/src/models/settings.ts
diff options
context:
space:
mode:
author苏向夜 <fu050409@163.com>2026-02-25 01:32:51 +0800
committer苏向夜 <fu050409@163.com>2026-02-25 01:32:51 +0800
commit66668d85d603c5841d755a6023aa1925559fc6d4 (patch)
tree485464148c76b0021efb55b7d2afd1c3004ceee0 /packages/ui-new/src/models/settings.ts
parenta6773bd092db654360c599ca6b0108ea0e456e8c (diff)
downloadDropOut-66668d85d603c5841d755a6023aa1925559fc6d4.tar.gz
DropOut-66668d85d603c5841d755a6023aa1925559fc6d4.zip
chore(workspace): replace legacy codes
Diffstat (limited to 'packages/ui-new/src/models/settings.ts')
-rw-r--r--packages/ui-new/src/models/settings.ts75
1 files changed, 0 insertions, 75 deletions
diff --git a/packages/ui-new/src/models/settings.ts b/packages/ui-new/src/models/settings.ts
deleted file mode 100644
index 9f4119c..0000000
--- a/packages/ui-new/src/models/settings.ts
+++ /dev/null
@@ -1,75 +0,0 @@
-import { toast } from "sonner";
-import { create } from "zustand/react";
-import { getConfigPath, getSettings, saveSettings } from "@/client";
-import type { LauncherConfig } from "@/types";
-
-export interface SettingsState {
- config: LauncherConfig | null;
- configPath: string | null;
-
- /* Theme getter */
- get theme(): string;
- /* Apply theme to the document */
- applyTheme: (theme?: string) => void;
-
- /* Refresh settings from the backend */
- refresh: () => Promise<void>;
- /* Save settings to the backend */
- save: () => Promise<void>;
- /* Update settings in the backend */
- update: (config: LauncherConfig) => Promise<void>;
- /* Merge settings with the current config without saving */
- merge: (config: Partial<LauncherConfig>) => void;
-}
-
-export const useSettingsStore = create<SettingsState>((set, get) => ({
- config: null,
- configPath: null,
-
- get theme() {
- const { config } = get();
- return config?.theme || "dark";
- },
- applyTheme: (theme?: string) => {
- const { config } = get();
- if (!config) return;
- if (!theme) theme = config.theme;
- let themeValue = theme;
- if (theme === "system") {
- themeValue = window.matchMedia("(prefers-color-scheme: dark)").matches
- ? "dark"
- : "light";
- }
- document.documentElement.classList.remove("light", "dark");
- document.documentElement.setAttribute("data-theme", themeValue);
- document.documentElement.classList.add(themeValue);
- set({ config: { ...config, theme } });
- },
-
- refresh: async () => {
- const { applyTheme } = get();
- try {
- const settings = await getSettings();
- const path = await getConfigPath();
- set({ config: settings, configPath: path });
- applyTheme(settings.theme);
- } catch (error) {
- console.error("Failed to load settings:", error);
- toast.error("Failed to load settings");
- }
- },
- save: async () => {
- const { config } = get();
- if (!config) return;
- await saveSettings(config);
- },
- update: async (config) => {
- await saveSettings(config);
- set({ config });
- },
- merge: (config) => {
- const { config: currentConfig } = get();
- if (!currentConfig) throw new Error("Settings not loaded");
- set({ config: { ...currentConfig, ...config } });
- },
-}));