diff --git a/web-app/src/routes/hub/index.tsx b/web-app/src/routes/hub/index.tsx index 081009fcd..3f5f35241 100644 --- a/web-app/src/routes/hub/index.tsx +++ b/web-app/src/routes/hub/index.tsx @@ -205,7 +205,8 @@ function Hub() { if ( e.target.value.length && - (e.target.value.includes('/') || e.target.value.startsWith('http')) + (e.target.value.includes('/') || e.target.value.startsWith('http')) && + !showOnlyDownloaded ) { setIsSearching(true) @@ -222,7 +223,8 @@ function Hub() { !sources.some( (s) => catalogModel.model_name.trim().split('/').pop() === - s.model_name.trim() + s.model_name.trim() && + catalogModel.developer.trim() === s.developer?.trim() ) ) { setHuggingFaceRepo(catalogModel) @@ -508,7 +510,46 @@ function Hub() {
{ + setShowOnlyDownloaded(checked) + if (checked) { + setHuggingFaceRepo(null) + } else if ( + searchValue.length && + (searchValue.includes('/') || searchValue.startsWith('http')) + ) { + // Re-trigger HuggingFace search when switching back to "All models" + setIsSearching(true) + if (addModelSourceTimeoutRef.current) { + clearTimeout(addModelSourceTimeoutRef.current) + } + addModelSourceTimeoutRef.current = setTimeout(async () => { + try { + const repoInfo = await fetchHuggingFaceRepo( + searchValue, + huggingfaceToken + ) + if (repoInfo) { + const catalogModel = convertHfRepoToCatalogModel(repoInfo) + if ( + !sources.some( + (s) => + catalogModel.model_name.trim().split('/').pop() === + s.model_name.trim() && + catalogModel.developer.trim() === s.developer?.trim() + ) + ) { + setHuggingFaceRepo(catalogModel) + } + } + } catch (error) { + console.error('Error fetching repository info:', error) + } finally { + setIsSearching(false) + } + }, 500) + } + }} /> {t('hub:downloaded')}