forked from Mirrors/gomuks
web/rightpanel: fix filtering member list
This commit is contained in:
parent
9fd50a6ae3
commit
717f2989a8
2 changed files with 7 additions and 5 deletions
|
@ -34,6 +34,7 @@ export function filter(users: AutocompleteMemberEntry[], query: string): Autocom
|
||||||
interface filteredUserCache {
|
interface filteredUserCache {
|
||||||
query: string
|
query: string
|
||||||
result: AutocompleteMemberEntry[]
|
result: AutocompleteMemberEntry[]
|
||||||
|
slicedResult?: AutocompleteMemberEntry[]
|
||||||
}
|
}
|
||||||
|
|
||||||
export function useFilteredMembers(
|
export function useFilteredMembers(
|
||||||
|
@ -44,15 +45,16 @@ export function useFilteredMembers(
|
||||||
if (!query) {
|
if (!query) {
|
||||||
prev.current.query = ""
|
prev.current.query = ""
|
||||||
prev.current.result = allMembers
|
prev.current.result = allMembers
|
||||||
|
prev.current.slicedResult = slice && allMembers.length > 100 ? allMembers.slice(0, 100) : undefined
|
||||||
} else if (prev.current.query !== query) {
|
} else if (prev.current.query !== query) {
|
||||||
prev.current.result = (sort ? filterAndSort : filter)(
|
prev.current.result = (sort ? filterAndSort : filter)(
|
||||||
query.startsWith(prev.current.query) ? prev.current.result : allMembers,
|
query.startsWith(prev.current.query) ? prev.current.result : allMembers,
|
||||||
query,
|
query,
|
||||||
)
|
)
|
||||||
if (prev.current.result.length > 100 && slice) {
|
prev.current.slicedResult = prev.current.result.length > 100 && slice
|
||||||
prev.current.result = prev.current.result.slice(0, 100)
|
? prev.current.result.slice(0, 100)
|
||||||
}
|
: undefined
|
||||||
prev.current.query = query
|
prev.current.query = query
|
||||||
}
|
}
|
||||||
return prev.current.result
|
return prev.current.slicedResult ?? prev.current.result
|
||||||
}
|
}
|
||||||
|
|
|
@ -50,7 +50,7 @@ const MemberList = () => {
|
||||||
roomCtx.store.membersRequested = true
|
roomCtx.store.membersRequested = true
|
||||||
use(ClientContext)?.loadRoomState(roomCtx.store.roomID, { omitMembers: false, refetch: false })
|
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) {
|
if (!roomCtx) {
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue