Load room member even when member drawer is closed (#1825)
authorAjay Bura <32841439+ajbura@users.noreply.github.com>
Tue, 23 Jul 2024 05:15:17 +0000 (10:45 +0530)
committerGitHub <noreply@github.com>
Tue, 23 Jul 2024 05:15:17 +0000 (15:15 +1000)
src/app/features/lobby/Lobby.tsx
src/app/features/room/MembersDrawer.tsx
src/app/features/room/Room.tsx

index 62df2769a02e05a5095c1b218b689b4af0ef6136..c963723508433d5ac86157444a7474922a4a3ec9 100644 (file)
@@ -47,6 +47,7 @@ import {
 import { useOrphanSpaces } from '../../state/hooks/roomList';
 import { roomToParentsAtom } from '../../state/room/roomToParents';
 import { AccountDataEvent } from '../../../types/matrix/accountData';
+import { useRoomMembers } from '../../hooks/useRoomMembers';
 
 export function Lobby() {
   const navigate = useNavigate();
@@ -57,6 +58,7 @@ export function Lobby() {
   const space = useSpace();
   const spacePowerLevels = usePowerLevels(space);
   const lex = useMemo(() => new ASCIILexicalTable(' '.charCodeAt(0), '~'.charCodeAt(0), 6), []);
+  const members = useRoomMembers(mx, space.roomId);
 
   const scrollRef = useRef<HTMLDivElement>(null);
   const heroSectionRef = useRef<HTMLDivElement>(null);
@@ -519,7 +521,7 @@ export function Lobby() {
         {screenSize === ScreenSize.Desktop && isDrawer && (
           <>
             <Line variant="Background" direction="Vertical" size="300" />
-            <MembersDrawer room={space} />
+            <MembersDrawer room={space} members={members} />
           </>
         )}
       </Box>
index 70a9aa3487b3d950436fb3f1652f9535f53c23b6..15d074121df720043876b8c74cf97c69bb144a98 100644 (file)
@@ -35,7 +35,6 @@ import classNames from 'classnames';
 
 import { openProfileViewer } from '../../../client/action/navigation';
 import * as css from './MembersDrawer.css';
-import { useRoomMembers } from '../../hooks/useRoomMembers';
 import { useMatrixClient } from '../../hooks/useMatrixClient';
 import { Membership } from '../../../types/matrix/room';
 import { UseStateProvider } from '../../components/UseStateProvider';
@@ -168,13 +167,13 @@ const getRoomMemberStr: SearchItemStrGetter<RoomMember> = (m, query) =>
 
 type MembersDrawerProps = {
   room: Room;
+  members: RoomMember[];
 };
-export function MembersDrawer({ room }: MembersDrawerProps) {
+export function MembersDrawer({ room, members }: MembersDrawerProps) {
   const mx = useMatrixClient();
   const scrollRef = useRef<HTMLDivElement>(null);
   const searchInputRef = useRef<HTMLInputElement>(null);
   const scrollTopAnchorRef = useRef<HTMLDivElement>(null);
-  const members = useRoomMembers(mx, room.roomId);
   const getPowerLevelTag = usePowerLevelTags();
   const fetchingMembers = members.length < room.getJoinedMemberCount();
   const setPeopleDrawer = useSetSetting(settingsAtom, 'isPeopleDrawer');
index 19ac53e15dc5b9c15713ebb045d5d64dc693ce6a..ee3e702740596649364aee2c0ce0669823c0d81d 100644 (file)
@@ -12,6 +12,7 @@ import { useRoom } from '../../hooks/useRoom';
 import { useKeyDown } from '../../hooks/useKeyDown';
 import { markAsRead } from '../../../client/action/notifications';
 import { useMatrixClient } from '../../hooks/useMatrixClient';
+import { useRoomMembers } from '../../hooks/useRoomMembers';
 
 export function Room() {
   const { eventId } = useParams();
@@ -21,6 +22,7 @@ export function Room() {
   const [isDrawer] = useSetting(settingsAtom, 'isPeopleDrawer');
   const screenSize = useScreenSizeContext();
   const powerLevels = usePowerLevels(room);
+  const members = useRoomMembers(mx, room.roomId);
 
   useKeyDown(
     window,
@@ -30,7 +32,7 @@ export function Room() {
           markAsRead(mx, room.roomId);
         }
       },
-      [room.roomId]
+      [mx, room.roomId]
     )
   );
 
@@ -41,7 +43,7 @@ export function Room() {
         {screenSize === ScreenSize.Desktop && isDrawer && (
           <>
             <Line variant="Background" direction="Vertical" size="300" />
-            <MembersDrawer key={room.roomId} room={room} />
+            <MembersDrawer key={room.roomId} room={room} members={members} />
           </>
         )}
       </Box>