import { createStore } from "zustand/vanilla"; import { getCurrentGiteaUser, giteaConfig, type GiteaUser } from "./api"; export type StatusTone = "neutral" | "success" | "error"; interface AppState { config: typeof giteaConfig; connectedUser: GiteaUser | null; isTestingConnection: boolean; statusMessage: string; statusTone: StatusTone; testConnection: () => Promise; } export const appStore = createStore()((set) => ({ config: giteaConfig, connectedUser: null, isTestingConnection: false, statusMessage: "Ready.", statusTone: "neutral", testConnection: async () => { set({ connectedUser: null, isTestingConnection: true, statusMessage: "Testing connection...", statusTone: "neutral" }); try { const user = await getCurrentGiteaUser(); set({ connectedUser: user, statusMessage: `Connected as ${user.full_name || user.login}.`, statusTone: "success" }); } catch (error) { const message = error instanceof Error ? error.message : "Connection failed."; set({ connectedUser: null, statusMessage: message, statusTone: "error" }); } finally { set({ isTestingConnection: false }); } } }));