diff --git a/web-app/src/containers/DropdownModelProvider.tsx b/web-app/src/containers/DropdownModelProvider.tsx index db959ebd4..b3bbf59bb 100644 --- a/web-app/src/containers/DropdownModelProvider.tsx +++ b/web-app/src/containers/DropdownModelProvider.tsx @@ -385,6 +385,11 @@ const DropdownModelProvider = ({ const handleSelect = useCallback( async (searchableModel: SearchableModel) => { + // Immediately update display to prevent double-click issues + setDisplayModel(searchableModel.model.id) + setSearchValue('') + setOpen(false) + selectModelProvider( searchableModel.provider.provider, searchableModel.model.id @@ -394,19 +399,6 @@ const DropdownModelProvider = ({ provider: searchableModel.provider.provider, }) - // Check mmproj existence for llamacpp models - if (searchableModel.provider.provider === 'llamacpp') { - await serviceHub - .models() - .checkMmprojExistsAndUpdateOffloadMMprojSetting( - searchableModel.model.id, - updateProvider, - getProviderByName - ) - // Also check vision capability - await checkAndUpdateModelVisionCapability(searchableModel.model.id) - } - // Store the selected model as last used if (useLastUsedModel) { setLastUsedModel( @@ -414,8 +406,25 @@ const DropdownModelProvider = ({ searchableModel.model.id ) } - setSearchValue('') - setOpen(false) + + // Check mmproj existence for llamacpp models (async, don't block UI) + if (searchableModel.provider.provider === 'llamacpp') { + serviceHub + .models() + .checkMmprojExistsAndUpdateOffloadMMprojSetting( + searchableModel.model.id, + updateProvider, + getProviderByName + ) + .catch((error) => { + console.debug('Error checking mmproj for model:', searchableModel.model.id, error) + }) + + // Also check vision capability (async, don't block UI) + checkAndUpdateModelVisionCapability(searchableModel.model.id).catch((error) => { + console.debug('Error checking vision capability for model:', searchableModel.model.id, error) + }) + } }, [ selectModelProvider,