Skip to content

Commit f886434

Browse files
authored
Merge pull request #6366 from menloresearch/fix/search-model-hub
fix: search hgf repo and downloaded filter
2 parents 2801fde + 38629af commit f886434

File tree

1 file changed

+46
-34
lines changed

1 file changed

+46
-34
lines changed

web-app/src/routes/hub/index.tsx

Lines changed: 46 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)