// desktop/src/stores/providerStore.ts import { create } from 'zustand' import { providersApi } from '../api/providers' import type { SavedProvider, CreateProviderInput, UpdateProviderInput, TestProviderConfigInput, ProviderTestResult, } from '../types/provider' type ProviderStore = { providers: SavedProvider[] activeId: string | null isLoading: boolean fetchProviders: () => Promise createProvider: (input: CreateProviderInput) => Promise updateProvider: (id: string, input: UpdateProviderInput) => Promise deleteProvider: (id: string) => Promise activateProvider: (id: string) => Promise activateOfficial: () => Promise testProvider: (id: string) => Promise testConfig: (input: TestProviderConfigInput) => Promise } export const useProviderStore = create((set, get) => ({ providers: [], activeId: null, isLoading: false, fetchProviders: async () => { set({ isLoading: true }) try { const { providers, activeId } = await providersApi.list() set({ providers, activeId, isLoading: false }) } catch { set({ isLoading: false }) } }, createProvider: async (input) => { const { provider } = await providersApi.create(input) await get().fetchProviders() return provider }, updateProvider: async (id, input) => { const { provider } = await providersApi.update(id, input) await get().fetchProviders() return provider }, deleteProvider: async (id) => { await providersApi.delete(id) await get().fetchProviders() }, activateProvider: async (id) => { await providersApi.activate(id) await get().fetchProviders() }, activateOfficial: async () => { await providersApi.activateOfficial() await get().fetchProviders() }, testProvider: async (id) => { const { result } = await providersApi.test(id) return result }, testConfig: async (input) => { const { result } = await providersApi.testConfig(input) return result }, }))