ui: fix radio button selection (#2001)
This commit is contained in:
@@ -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),
|
||||||
})
|
})
|
||||||
)}
|
)}
|
||||||
|
|||||||
Reference in New Issue
Block a user