MCPcopy Create free account
hub / github.com/MiniMax-AI/OpenRoom / SettingsModal

Function SettingsModal

apps/webuiapps/src/components/ChatPanel/index.tsx:1232–1470  ·  view source on GitHub ↗
({ config, imageGenConfig, onSave, onClose })

Source from the content-addressed store, hash-verified

1230 onSave: (_config: LLMConfig, _igConfig: ImageGenConfig | null) => void;
1231 onClose: () => void;
1232}> = ({ config, imageGenConfig, onSave, onClose }) => {
1233 // LLM settings
1234 const [provider, setProvider] = useState<LLMProvider>(config?.provider || 'minimax');
1235 const [apiKey, setApiKey] = useState(config?.apiKey || '');
1236 const [baseUrl, setBaseUrl] = useState(
1237 config?.baseUrl || getDefaultProviderConfig('minimax').baseUrl,
1238 );
1239 const [model, setModel] = useState(config?.model || getDefaultProviderConfig('minimax').model);
1240 const [customHeaders, setCustomHeaders] = useState(config?.customHeaders || '');
1241 const [manualModelMode, setManualModelMode] = useState(false);
1242
1243 const isPresetModel = PROVIDER_MODELS[provider]?.includes(model) ?? false;
1244 const showDropdown = !manualModelMode && isPresetModel;
1245
1246 // Image gen settings
1247 const [igProvider, setIgProvider] = useState<ImageGenProvider>(
1248 imageGenConfig?.provider || 'gemini',
1249 );
1250 const [igApiKey, setIgApiKey] = useState(imageGenConfig?.apiKey || '');
1251 const [igBaseUrl, setIgBaseUrl] = useState(
1252 imageGenConfig?.baseUrl || getDefaultImageGenConfig('gemini').baseUrl,
1253 );
1254 const [igModel, setIgModel] = useState(
1255 imageGenConfig?.model || getDefaultImageGenConfig('gemini').model,
1256 );
1257 const [igCustomHeaders, setIgCustomHeaders] = useState(imageGenConfig?.customHeaders || '');
1258
1259 const handleProviderChange = (p: LLMProvider) => {
1260 setProvider(p);
1261 const defaults = getDefaultProviderConfig(p);
1262 setBaseUrl(defaults.baseUrl);
1263 setModel(defaults.model);
1264 setManualModelMode(false);
1265 };
1266
1267 const handleModelChange = (newModel: string) => {
1268 setModel(newModel);
1269 setManualModelMode(false);
1270 };
1271
1272 const handleIgProviderChange = (p: ImageGenProvider) => {
1273 setIgProvider(p);
1274 const defaults = getDefaultImageGenConfig(p);
1275 setIgBaseUrl(defaults.baseUrl);
1276 setIgModel(defaults.model);
1277 };
1278
1279 return (
1280 <div className={styles.overlay} data-testid="settings-overlay">
1281 <div className={styles.settingsModal} data-testid="settings-modal">
1282 <div className={styles.settingsTitle}>LLM Settings</div>
1283
1284 <div className={styles.field}>
1285 <label className={styles.label}>Provider</label>
1286 <select
1287 className={styles.select}
1288 value={provider}
1289 onChange={(e) => handleProviderChange(e.target.value as LLMProvider)}

Callers

nothing calls this directly

Calls 5

getDefaultProviderConfigFunction · 0.90
getDefaultImageGenConfigFunction · 0.90
handleProviderChangeFunction · 0.85
handleModelChangeFunction · 0.85
handleIgProviderChangeFunction · 0.85

Tested by

no test coverage detected