From 7fc46ec5d95e70d4b3d1d929480d9659c4cad69f Mon Sep 17 00:00:00 2001 From: Badi Ifaoui Date: Thu, 14 Dec 2023 23:09:35 +0100 Subject: [PATCH] feat: say hello btn on new dm view (#18) * feat: say hello btn on new dm view * fix: tokengated room --- .../superhero/img/icons/tokengated-room.svg | 4 ++-- src/components/views/elements/RoomName.tsx | 10 ++++++---- src/components/views/rooms/NewRoomIntro.tsx | 20 +++++++++++++++++++ 3 files changed, 28 insertions(+), 6 deletions(-) diff --git a/res/themes/superhero/img/icons/tokengated-room.svg b/res/themes/superhero/img/icons/tokengated-room.svg index d69c4e31c30..2108131a86f 100644 --- a/res/themes/superhero/img/icons/tokengated-room.svg +++ b/res/themes/superhero/img/icons/tokengated-room.svg @@ -1,6 +1,6 @@ - + diff --git a/src/components/views/elements/RoomName.tsx b/src/components/views/elements/RoomName.tsx index bc3738d5336..39a11df23c4 100644 --- a/src/components/views/elements/RoomName.tsx +++ b/src/components/views/elements/RoomName.tsx @@ -33,10 +33,12 @@ export const RoomName = ({ room, children, maxLength }: IProps): JSX.Element => const isVerifiedRoom = useVerifiedRoom(room); const roomUsers: string[] = useMemo(() => { - return (room as Room) - .getMembers() - .map((m) => m.userId) - .filter((userId) => !!userId && userId != (room as Room).myUserId); + return ( + (room as Room) + ?.getMembers?.() + .map((m: { userId: string }) => m.userId) + .filter((userId: string) => !!userId && userId !== (room as Room)?.myUserId) || [] + ); }, [room]); const truncatedRoomName = useMemo(() => { diff --git a/src/components/views/rooms/NewRoomIntro.tsx b/src/components/views/rooms/NewRoomIntro.tsx index fd7612eb3fa..e8eca640dc0 100644 --- a/src/components/views/rooms/NewRoomIntro.tsx +++ b/src/components/views/rooms/NewRoomIntro.tsx @@ -69,6 +69,24 @@ const NewRoomIntro: React.FC = () => { const isLocalRoom = room instanceof LocalRoom; const dmPartner = isLocalRoom ? room.targets[0]?.userId : DMRoomMap.shared().getUserIdForRoomId(roomId); + const onSendHelloClick = (): void => { + if (!dmPartner) return; + cli.sendEvent(roomId, EventType.RoomMessage, { + body: "👋", + msgtype: "m.text", + }); + }; + + const sendHelloButton = !room.getLastActiveTimestamp() && ( + + 👋 + + ); + let body: JSX.Element; if (dmPartner) { const { shouldEncrypt: encryptedSingle3rdPartyInvite } = shouldEncryptRoomWithSingle3rdPartyInvite(room); @@ -113,6 +131,7 @@ const NewRoomIntro: React.FC = () => { )}

{caption &&

{caption}

} + {sendHelloButton} ); } else { @@ -262,6 +281,7 @@ const NewRoomIntro: React.FC = () => {

{topicText}

{buttons} + {sendHelloButton} ); }