1
0
Fork 0
forked from Mirrors/gomuks

web/rightpanel: fix filtering member list

This commit is contained in:
Tulir Asokan 2025-01-30 14:49:12 +02:00
parent 9fd50a6ae3
commit 717f2989a8
2 changed files with 7 additions and 5 deletions

View file

@ -34,6 +34,7 @@ export function filter(users: AutocompleteMemberEntry[], query: string): Autocom
interface filteredUserCache {
query: string
result: AutocompleteMemberEntry[]
slicedResult?: AutocompleteMemberEntry[]
}
export function useFilteredMembers(
@ -44,15 +45,16 @@ export function useFilteredMembers(
if (!query) {
prev.current.query = ""
prev.current.result = allMembers
prev.current.slicedResult = slice && allMembers.length > 100 ? allMembers.slice(0, 100) : undefined
} else if (prev.current.query !== query) {
prev.current.result = (sort ? filterAndSort : filter)(
query.startsWith(prev.current.query) ? prev.current.result : allMembers,
query,
)
if (prev.current.result.length > 100 && slice) {
prev.current.result = prev.current.result.slice(0, 100)
}
prev.current.slicedResult = prev.current.result.length > 100 && slice
? prev.current.result.slice(0, 100)
: undefined
prev.current.query = query
}
return prev.current.result
return prev.current.slicedResult ?? prev.current.result
}

View file

@ -50,7 +50,7 @@ const MemberList = () => {
roomCtx.store.membersRequested = true
use(ClientContext)?.loadRoomState(roomCtx.store.roomID, { omitMembers: false, refetch: false })
}
const memberEvents = useFilteredMembers(roomCtx?.store, filter)
const memberEvents = useFilteredMembers(roomCtx?.store, filter, false, false)
if (!roomCtx) {
return null
}