import { useState } from 'react'; import type { Provider, Model, UpdateProviderInput, UpdateModelInput } from '@/types'; import { useProviders, useCreateProvider, useUpdateProvider, useDeleteProvider } from '@/hooks/useProviders'; import { useCreateModel, useUpdateModel } from '@/hooks/useModels'; import { ProviderTable } from './ProviderTable'; import { ProviderForm } from './ProviderForm'; import { ModelForm } from './ModelForm'; export function ProvidersPage() { const { data: providers = [], isLoading } = useProviders(); const createProvider = useCreateProvider(); const updateProvider = useUpdateProvider(); const deleteProvider = useDeleteProvider(); const createModel = useCreateModel(); const updateModel = useUpdateModel(); const [providerFormOpen, setProviderFormOpen] = useState(false); const [editingProvider, setEditingProvider] = useState(); const [modelFormOpen, setModelFormOpen] = useState(false); const [editingModel, setEditingModel] = useState(); const [modelFormProviderId, setModelFormProviderId] = useState(''); return (
{ setEditingProvider(undefined); setProviderFormOpen(true); }} onEdit={(provider) => { setEditingProvider(provider); setProviderFormOpen(true); }} onDelete={(id) => deleteProvider.mutate(id)} onAddModel={(providerId) => { setEditingModel(undefined); setModelFormProviderId(providerId); setModelFormOpen(true); }} onEditModel={(model) => { setEditingModel(model); setModelFormProviderId(model.providerId); setModelFormOpen(true); }} /> { try { if (editingProvider) { const input: Partial = {}; if (values.name !== editingProvider.name) input.name = values.name; if (values.apiKey) input.apiKey = values.apiKey; if (values.baseUrl !== editingProvider.baseUrl) input.baseUrl = values.baseUrl; if (values.enabled !== editingProvider.enabled) input.enabled = values.enabled; await updateProvider.mutateAsync({ id: editingProvider.id, input }); } else { await createProvider.mutateAsync(values); } setProviderFormOpen(false); } catch { // 错误已由 hooks 的 onError 处理 } }} onCancel={() => setProviderFormOpen(false)} /> { try { if (editingModel) { const input: Partial = {}; if (values.providerId !== editingModel.providerId) input.providerId = values.providerId; if (values.modelName !== editingModel.modelName) input.modelName = values.modelName; if (values.enabled !== editingModel.enabled) input.enabled = values.enabled; await updateModel.mutateAsync({ id: editingModel.id, input }); } else { await createModel.mutateAsync(values); } setModelFormOpen(false); } catch { // 错误已由 hooks 的 onError 处理 } }} onCancel={() => setModelFormOpen(false)} />
); }