From 5ee3897fdee786be5017f76a6bb2ffb20af66c66 Mon Sep 17 00:00:00 2001 From: Gigiaj Date: Sun, 4 May 2025 12:16:15 -0500 Subject: [PATCH] Add RoomNavUser for displaying the user avatar + name in the nav for a visual of call activity and participants --- src/app/features/room-nav/RoomNavUser.tsx | 49 +++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 src/app/features/room-nav/RoomNavUser.tsx diff --git a/src/app/features/room-nav/RoomNavUser.tsx b/src/app/features/room-nav/RoomNavUser.tsx new file mode 100644 index 00000000..6a533a0e --- /dev/null +++ b/src/app/features/room-nav/RoomNavUser.tsx @@ -0,0 +1,49 @@ +import { Avatar, Box, Icon, Icons } from 'folds'; +import React from 'react'; +import { Room, RoomMember } from 'matrix-js-sdk'; +import { NavItem, NavItemContent } from '../../components/nav'; +import { UserAvatar } from '../../components/user-avatar'; +import { useMatrixClient } from '../../hooks/useMatrixClient'; +import { useRoomMembers } from '../../hooks/useRoomMembers'; +import { getMxIdLocalPart } from '../../utils/matrix'; +import { getMemberDisplayName } from '../../utils/room'; +import { useMediaAuthentication } from '../../hooks/useMediaAuthentication'; + +type RoomNavUserProps = { + room: Room; + space: Room; + sender: string; +}; +export function RoomNavUser({ room, space, sender }: RoomNavUserProps) { + const mx = useMatrixClient(); + const members = useRoomMembers(mx, space.roomId); + const useAuthentication = useMediaAuthentication(); + + const member = members.find((roomMember) => roomMember.userId === sender); + const avatarMxcUrl = member?.getMxcAvatarUrl(); + const avatarUrl = avatarMxcUrl + ? mx.mxcUrlToHttp(avatarMxcUrl, 32, 32, 'crop', undefined, false, useAuthentication) + : undefined; + const getName = + getMemberDisplayName(room, member?.userId ?? '') ?? + getMxIdLocalPart(member?.userId ?? '') ?? + member?.userId; + + return ( + + + + + } + /> + + {getName} + + + + ); +}