@@ -194,46 +194,50 @@ function Hub() {
194194 fetchSources ( )
195195 } , [ fetchSources ] )
196196
197- const handleSearchChange = ( e : ChangeEvent < HTMLInputElement > ) => {
198- setIsSearching ( false )
199- setSearchValue ( e . target . value )
200- setHuggingFaceRepo ( null ) // Clear previous repo info
197+ const fetchHuggingFaceModel = async ( searchValue : string ) => {
198+ if (
199+ ! searchValue . length ||
200+ ( ! searchValue . includes ( '/' ) && ! searchValue . startsWith ( 'http' ) )
201+ ) {
202+ return
203+ }
201204
205+ setIsSearching ( true )
202206 if ( addModelSourceTimeoutRef . current ) {
203207 clearTimeout ( addModelSourceTimeoutRef . current )
204208 }
205209
206- if (
207- e . target . value . length &&
208- ( e . target . value . includes ( '/' ) || e . target . value . startsWith ( 'http' ) )
209- ) {
210- setIsSearching ( true )
211-
212- addModelSourceTimeoutRef . current = setTimeout ( async ( ) => {
213- try {
214- // Fetch HuggingFace repository information
215- const repoInfo = await fetchHuggingFaceRepo (
216- e . target . value ,
217- huggingfaceToken
218- )
219- if ( repoInfo ) {
220- const catalogModel = convertHfRepoToCatalogModel ( repoInfo )
221- if (
222- ! sources . some (
223- ( s ) =>
224- catalogModel . model_name . trim ( ) . split ( '/' ) . pop ( ) ===
225- s . model_name . trim ( )
226- )
227- ) {
228- setHuggingFaceRepo ( catalogModel )
229- }
210+ addModelSourceTimeoutRef . current = setTimeout ( async ( ) => {
211+ try {
212+ const repoInfo = await fetchHuggingFaceRepo ( searchValue , huggingfaceToken )
213+ if ( repoInfo ) {
214+ const catalogModel = convertHfRepoToCatalogModel ( repoInfo )
215+ if (
216+ ! sources . some (
217+ ( s ) =>
218+ catalogModel . model_name . trim ( ) . split ( '/' ) . pop ( ) ===
219+ s . model_name . trim ( ) &&
220+ catalogModel . developer . trim ( ) === s . developer ?. trim ( )
221+ )
222+ ) {
223+ setHuggingFaceRepo ( catalogModel )
230224 }
231- } catch ( error ) {
232- console . error ( 'Error fetching repository info:' , error )
233- } finally {
234- setIsSearching ( false )
235225 }
236- } , 500 )
226+ } catch ( error ) {
227+ console . error ( 'Error fetching repository info:' , error )
228+ } finally {
229+ setIsSearching ( false )
230+ }
231+ } , 500 )
232+ }
233+
234+ const handleSearchChange = ( e : ChangeEvent < HTMLInputElement > ) => {
235+ setIsSearching ( false )
236+ setSearchValue ( e . target . value )
237+ setHuggingFaceRepo ( null ) // Clear previous repo info
238+
239+ if ( ! showOnlyDownloaded ) {
240+ fetchHuggingFaceModel ( e . target . value )
237241 }
238242 }
239243
@@ -508,7 +512,15 @@ function Hub() {
508512 < div className = "flex items-center gap-2" >
509513 < Switch
510514 checked = { showOnlyDownloaded }
511- onCheckedChange = { setShowOnlyDownloaded }
515+ onCheckedChange = { ( checked ) => {
516+ setShowOnlyDownloaded ( checked )
517+ if ( checked ) {
518+ setHuggingFaceRepo ( null )
519+ } else {
520+ // Re-trigger HuggingFace search when switching back to "All models"
521+ fetchHuggingFaceModel ( searchValue )
522+ }
523+ } }
512524 />
513525 < span className = "text-xs text-main-view-fg/70 font-medium whitespace-nowrap" >
514526 { t ( 'hub:downloaded' ) }
0 commit comments