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}
);
}