diff --git a/src/settings/components/ModelProviderSettings.tsx b/src/settings/components/ModelProviderSettings.tsx index 6de7e11..797413a 100644 --- a/src/settings/components/ModelProviderSettings.tsx +++ b/src/settings/components/ModelProviderSettings.tsx @@ -1,4 +1,4 @@ -import React, { useState } from 'react'; +import React from 'react'; import { t } from '../../lang/helpers'; import InfioPlugin from "../../main"; @@ -50,13 +50,21 @@ const getProviderSettingKey = (provider: ApiProvider): ProviderSettingKey => { const CustomProviderSettings: React.FC = ({ plugin, onSettingsUpdate }) => { const settings = plugin.settings; - const [activeTab, setActiveTab] = useState(ApiProvider.Infio); + const activeTab = settings.activeProviderTab || ApiProvider.Infio; const handleSettingsUpdate = async (newSettings: InfioSettings) => { await plugin.setSettings(newSettings); onSettingsUpdate?.(); }; + const setActiveTab = (provider: ApiProvider) => { + const newSettings = { + ...settings, + activeProviderTab: provider + }; + handleSettingsUpdate(newSettings); + }; + const providers = GetAllProviders(); // 按照重要程度排序 const embeddingProviders = GetEmbeddingProviders(); // 按照重要程度排序 diff --git a/src/types/settings.ts b/src/types/settings.ts index 6ca4c78..1146927 100644 --- a/src/types/settings.ts +++ b/src/types/settings.ts @@ -241,6 +241,9 @@ export const InfioSettingsSchema = z.object({ modelId: z.string(), })).catch([]), + // Active Provider Tab (for UI state) + activeProviderTab: z.nativeEnum(ApiProvider).catch(ApiProvider.Infio), + // Chat Model chatModelProvider: z.nativeEnum(ApiProvider).catch(ApiProvider.Infio), chatModelId: z.string().catch(''),