ui: fix radio button selection (#2001)

This commit is contained in:
Lily Delalande
2025-04-02 09:02:35 -04:00
committed by GitHub
parent c525d225b6
commit 4e5989dfb0
@@ -63,32 +63,36 @@ export function BaseModelsList({
} }
}; };
initializeCurrentModel(); initializeCurrentModel().then();
return () => { return () => {
isMounted = false; isMounted = false;
}; };
}, [read]); }, [read]);
const handleModelSelection = async (modelName: string, providerName: string) => { const handleModelSelection = async (model: Model) => {
await changeModel({ model: selectedModel, writeToConfig: upsert }); // Fix: Use the model parameter that's passed in
await changeModel({ model: model, writeToConfig: upsert });
}; };
// Updated to work with CustomRadio // Updated to work with CustomRadio
const handleRadioChange = async (model: Model) => { const handleRadioChange = async (model: Model) => {
if (selectedModel.name === model.name && selectedModel.provider === model.provider) { // Check if the selected model is already active
if (
selectedModel &&
selectedModel.name === model.name &&
selectedModel.provider === model.provider
) {
console.log(`Model "${model.name}" is already active.`); console.log(`Model "${model.name}" is already active.`);
return; return;
} }
const providerMetaData = await getProviderMetadata(model.provider, getProviders);
const providerDisplayName = providerMetaData.display_name;
// Update local state immediately for UI feedback and add in display name
setSelectedModel({ ...model, alias: providerDisplayName });
try { try {
await handleModelSelection(model.name, model.provider); // Fix: First save the model to config, then update local state
await handleModelSelection(model);
// Update local state after successful save
setSelectedModel(model);
} catch (error) { } catch (error) {
console.error('Error selecting model:', error); console.error('Error selecting model:', error);
} }
@@ -104,7 +108,10 @@ export function BaseModelsList({
{modelList.map((model) => {modelList.map((model) =>
renderItem({ renderItem({
model, model,
isSelected: selectedModel === model, isSelected:
selectedModel &&
selectedModel.name === model.name &&
selectedModel.provider === model.provider,
onSelect: () => handleRadioChange(model), onSelect: () => handleRadioChange(model),
}) })
)} )}