import { create } from 'zustand'; import type { GiteaConfig } from './schema'; type GiteaConfigState = { config: GiteaConfig; setConfig: (config: Partial) => void; resetConfig: () => void; }; const DEFAULT_CONFIG: GiteaConfig = { GITEA_TOKEN: '', GITEA_URL: 'https://git.xiongxiao.me', }; const loadInitialConfig = (): GiteaConfig => { try { const token = localStorage.getItem('GITEA_TOKEN') || ''; const url = localStorage.getItem('GITEA_URL') || DEFAULT_CONFIG.GITEA_URL; return { GITEA_TOKEN: token, GITEA_URL: url, }; } catch { // Ignore parse errors } return DEFAULT_CONFIG; }; const saveConfig = (config: GiteaConfig) => { try { localStorage.setItem('GITEA_TOKEN', config.GITEA_TOKEN); localStorage.setItem('GITEA_URL', config.GITEA_URL); } catch (error) { console.error('Failed to save config:', error); } }; export const useGiteaConfigStore = create()((set) => ({ config: loadInitialConfig(), setConfig: (newConfig) => set((state) => { const updatedConfig = { ...state.config, ...newConfig }; saveConfig(updatedConfig); return { config: updatedConfig }; }), resetConfig: () => { saveConfig(DEFAULT_CONFIG); return set({ config: DEFAULT_CONFIG }); }, }));