11import { useCallback , useDeferredValue , useEffect , useLayoutEffect , useMemo , useRef , useState } from 'react'
22import { Check , ChevronLeft , ChevronRight , Clock , MoreVertical , Search , Star , Trash2 , X } from 'lucide-react'
33import { useModelSelection } from '@/hooks/useModelSelection'
4- import { formatModelKey } from '@/stores/modelStore'
54import { useVariants } from '@/hooks/useVariants'
65import { formatModelName , formatProviderName , getProviders } from '@/api/providers'
76import { useQuery } from '@tanstack/react-query'
@@ -21,7 +20,6 @@ interface ModelQuickSelectProps {
2120 opcodeUrl : string | null | undefined
2221 directory ?: string
2322 disabled ?: boolean
24- onModelChange ?: ( ) => void
2523 children : React . ReactNode
2624}
2725
@@ -77,7 +75,7 @@ function createModelListItem(provider: Provider, modelID: string, model: Model):
7775 return {
7876 providerID : provider . id ,
7977 modelID,
80- key : formatModelKey ( { providerID : provider . id , modelID } ) ,
78+ key : ` ${ provider . id } / ${ modelID } ` ,
8179 displayName,
8280 providerName,
8381 searchText : createSearchText ( displayName , modelID , providerName , provider . id ) ,
@@ -89,13 +87,17 @@ function createFallbackModelListItem(providerID: string, modelID: string): Model
8987 return {
9088 providerID,
9189 modelID,
92- key : formatModelKey ( { providerID, modelID } ) ,
90+ key : ` ${ providerID } / ${ modelID } ` ,
9391 displayName : modelID ,
9492 providerName : providerID ,
9593 searchText : createSearchText ( modelID , providerID ) ,
9694 }
9795}
9896
97+ function getSelectionKey ( selection : { providerID : string , modelID : string } ) {
98+ return `${ selection . providerID } /${ selection . modelID } `
99+ }
100+
99101function VirtualizedList < T > ( {
100102 items,
101103 itemHeight,
@@ -183,7 +185,6 @@ export function ModelQuickSelect({
183185 opcodeUrl,
184186 directory,
185187 disabled,
186- onModelChange,
187188 children,
188189} : ModelQuickSelectProps ) {
189190 const [ isOpen , setIsOpen ] = useState ( false )
@@ -205,11 +206,11 @@ export function ModelQuickSelect({
205206 const providers = providersData ?. providers ?? EMPTY_PROVIDERS
206207
207208 const favoriteKeySet = useMemo ( ( ) => {
208- return new Set ( favoriteModels . map ( formatModelKey ) )
209+ return new Set ( favoriteModels . map ( getSelectionKey ) )
209210 } , [ favoriteModels ] )
210211
211212 const recentKeySet = useMemo ( ( ) => {
212- return new Set ( recentModels . map ( formatModelKey ) )
213+ return new Set ( recentModels . map ( getSelectionKey ) )
213214 } , [ recentModels ] )
214215
215216 const { providerById, providerItems } = useMemo ( ( ) => {
@@ -305,15 +306,15 @@ export function ModelQuickSelect({
305306
306307 const favoriteModelsWithNames = useMemo ( ( ) => {
307308 return favoriteModels
308- . filter ( favorite => formatModelKey ( favorite ) !== modelString )
309+ . filter ( favorite => ` ${ favorite . providerID } / ${ favorite . modelID } ` !== modelString )
309310 . slice ( 0 , 5 )
310311 . map ( toModelListItem )
311312 } , [ favoriteModels , modelString , toModelListItem ] )
312313
313314 const recentModelsWithNames = useMemo ( ( ) => {
314315 return recentModels
315316 . filter ( recent => {
316- const key = formatModelKey ( recent )
317+ const key = getSelectionKey ( recent )
317318 return key !== modelString && ! favoriteKeySet . has ( key )
318319 } )
319320 . slice ( 0 , 5 )
@@ -413,7 +414,6 @@ export function ModelQuickSelect({
413414
414415 const handleModelSelect = ( providerID : string , modelID : string ) => {
415416 setModel ( { providerID, modelID } )
416- onModelChange ?.( )
417417 setShowAllModels ( false )
418418 setSearchQuery ( '' )
419419 setSelectedProviderId ( null )
0 commit comments