From 717f2989a8bc7cfefaea9c417ec5023705fcb544 Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Thu, 30 Jan 2025 14:49:12 +0200 Subject: [PATCH] web/rightpanel: fix filtering member list --- web/src/ui/composer/userautocomplete.ts | 10 ++++++---- web/src/ui/rightpanel/MemberList.tsx | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/web/src/ui/composer/userautocomplete.ts b/web/src/ui/composer/userautocomplete.ts index a9e9845..38f207c 100644 --- a/web/src/ui/composer/userautocomplete.ts +++ b/web/src/ui/composer/userautocomplete.ts @@ -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 } diff --git a/web/src/ui/rightpanel/MemberList.tsx b/web/src/ui/rightpanel/MemberList.tsx index 8e41e27..2c7ed26 100644 --- a/web/src/ui/rightpanel/MemberList.tsx +++ b/web/src/ui/rightpanel/MemberList.tsx @@ -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 }