Skip to content

Commit fd05214

Browse files
authored
Merge pull request #6474 from menloresearch/fix/model-selection
fix: immediate update value model selection
2 parents 0e97264 + 4ef64ce commit fd05214

File tree

1 file changed

+41
-18
lines changed

1 file changed

+41
-18
lines changed

web-app/src/containers/DropdownModelProvider.tsx

Lines changed: 41 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
/* eslint-disable @typescript-eslint/no-explicit-any */
12
import { useEffect, useState, useRef, useMemo, useCallback } from 'react'
23
import {
34
Popover,
@@ -121,17 +122,20 @@ const DropdownModelProvider = ({
121122

122123
// Add 'vision' capability if not already present AND if user hasn't manually configured capabilities
123124
// Check if model has a custom capabilities config flag
124-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
125-
const hasUserConfiguredCapabilities = (model as any)._userConfiguredCapabilities === true
126-
127-
if (!capabilities.includes('vision') && !hasUserConfiguredCapabilities) {
125+
126+
const hasUserConfiguredCapabilities =
127+
(model as any)._userConfiguredCapabilities === true
128+
129+
if (
130+
!capabilities.includes('vision') &&
131+
!hasUserConfiguredCapabilities
132+
) {
128133
const updatedModels = [...provider.models]
129134
updatedModels[modelIndex] = {
130135
...model,
131136
capabilities: [...capabilities, 'vision'],
132137
// Mark this as auto-detected, not user-configured
133138
_autoDetectedVision: true,
134-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
135139
} as any
136140

137141
updateProvider('llamacpp', { models: updatedModels })
@@ -385,6 +389,11 @@ const DropdownModelProvider = ({
385389

386390
const handleSelect = useCallback(
387391
async (searchableModel: SearchableModel) => {
392+
// Immediately update display to prevent double-click issues
393+
setDisplayModel(searchableModel.model.id)
394+
setSearchValue('')
395+
setOpen(false)
396+
388397
selectModelProvider(
389398
searchableModel.provider.provider,
390399
searchableModel.model.id
@@ -394,28 +403,42 @@ const DropdownModelProvider = ({
394403
provider: searchableModel.provider.provider,
395404
})
396405

397-
// Check mmproj existence for llamacpp models
406+
// Store the selected model as last used
407+
if (useLastUsedModel) {
408+
setLastUsedModel(
409+
searchableModel.provider.provider,
410+
searchableModel.model.id
411+
)
412+
}
413+
414+
// Check mmproj existence for llamacpp models (async, don't block UI)
398415
if (searchableModel.provider.provider === 'llamacpp') {
399-
await serviceHub
416+
serviceHub
400417
.models()
401418
.checkMmprojExistsAndUpdateOffloadMMprojSetting(
402419
searchableModel.model.id,
403420
updateProvider,
404421
getProviderByName
405422
)
406-
// Also check vision capability
407-
await checkAndUpdateModelVisionCapability(searchableModel.model.id)
408-
}
409-
410-
// Store the selected model as last used
411-
if (useLastUsedModel) {
412-
setLastUsedModel(
413-
searchableModel.provider.provider,
414-
searchableModel.model.id
423+
.catch((error) => {
424+
console.debug(
425+
'Error checking mmproj for model:',
426+
searchableModel.model.id,
427+
error
428+
)
429+
})
430+
431+
// Also check vision capability (async, don't block UI)
432+
checkAndUpdateModelVisionCapability(searchableModel.model.id).catch(
433+
(error) => {
434+
console.debug(
435+
'Error checking vision capability for model:',
436+
searchableModel.model.id,
437+
error
438+
)
439+
}
415440
)
416441
}
417-
setSearchValue('')
418-
setOpen(false)
419442
},
420443
[
421444
selectModelProvider,

0 commit comments

Comments
 (0)