fix: improved popup item filtering logic

This commit is contained in:
kangfenmao 2024-11-12 19:14:57 +08:00
parent 7d3cae1f5b
commit 0f3dc87d08

View File

@ -63,11 +63,8 @@ const PopupContainer: React.FC<PopupContainerProps> = ({ model, resolve }) => {
const filteredItems: MenuItem[] = providers const filteredItems: MenuItem[] = providers
.filter((p) => p.models && p.models.length > 0) .filter((p) => p.models && p.models.length > 0)
.map((p) => ({ .map((p) => {
key: p.id, const filteredModels = reverse(sortBy(p.models, 'name'))
label: p.isSystem ? t(`provider.${p.id}`) : p.name,
type: 'group',
children: reverse(sortBy(p.models, 'name'))
.filter((m) => .filter((m) =>
[m.name + m.provider + t('provider.' + p.id)].join('').toLowerCase().includes(searchText.toLowerCase()) [m.name + m.provider + t('provider.' + p.id)].join('').toLowerCase().includes(searchText.toLowerCase())
) )
@ -98,7 +95,18 @@ const PopupContainer: React.FC<PopupContainerProps> = ({ model, resolve }) => {
setOpen(false) setOpen(false)
} }
})) }))
}))
// Only return the group if it has filtered models
return filteredModels.length > 0
? {
key: p.id,
label: p.isSystem ? t(`provider.${p.id}`) : p.name,
type: 'group',
children: filteredModels
}
: null
})
.filter(Boolean) as MenuItem[] // Filter out null items
if (pinnedModels.length > 0 && searchText.length === 0) { if (pinnedModels.length > 0 && searchText.length === 0) {
const pinnedItems = providers const pinnedItems = providers