import { useRecoilValue } from 'recoil'; import { OpenAISettings, BingAISettings, AnthropicSettings } from './Settings'; import { GoogleSettings, PluginsSettings } from './Settings/MultiView'; import type { TSettingsProps, TModelSelectProps, TBaseSettingsProps, TModels } from '~/common'; import { cn } from '~/utils'; import store from '~/store'; const optionComponents: { [key: string]: React.FC } = { openAI: OpenAISettings, azureOpenAI: OpenAISettings, bingAI: BingAISettings, anthropic: AnthropicSettings, }; const multiViewComponents: { [key: string]: React.FC } = { google: GoogleSettings, gptPlugins: PluginsSettings, }; export default function Settings({ conversation, setOption, isPreset = false, className = '', }: TSettingsProps) { const modelsConfig = useRecoilValue(store.modelsConfig); if (!conversation?.endpoint) { return null; } const { endpoint } = conversation; const models = modelsConfig?.[endpoint] ?? []; const OptionComponent = optionComponents[endpoint]; if (OptionComponent) { return (
); } const MultiViewComponent = multiViewComponents[endpoint]; if (!MultiViewComponent) { return null; } return (
); }