mirror of
https://github.com/NanmiCoder/cc-haha
synced 2026-07-17 13:13:35 +08:00
80 lines
2.0 KiB
TypeScript
80 lines
2.0 KiB
TypeScript
// 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<void>
|
|
createProvider: (input: CreateProviderInput) => Promise<SavedProvider>
|
|
updateProvider: (id: string, input: UpdateProviderInput) => Promise<SavedProvider>
|
|
deleteProvider: (id: string) => Promise<void>
|
|
activateProvider: (id: string) => Promise<void>
|
|
activateOfficial: () => Promise<void>
|
|
testProvider: (id: string) => Promise<ProviderTestResult>
|
|
testConfig: (input: TestProviderConfigInput) => Promise<ProviderTestResult>
|
|
}
|
|
|
|
export const useProviderStore = create<ProviderStore>((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
|
|
},
|
|
}))
|