From a2a83fc316d85d3b58995f2b8c573a6c2a79f82b Mon Sep 17 00:00:00 2001 From: Gigiaj Date: Fri, 2 May 2025 17:11:03 -0500 Subject: [PATCH] update to enable chat icon to be able to open call room WITHOUT joining by making sure the navitems into a diff call room performs a hangup on click --- src/app/features/room-nav/RoomNavItem.tsx | 32 +++++++++++++++++++---- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/src/app/features/room-nav/RoomNavItem.tsx b/src/app/features/room-nav/RoomNavItem.tsx index 17badd2e..5eb2f1ba 100644 --- a/src/app/features/room-nav/RoomNavItem.tsx +++ b/src/app/features/room-nav/RoomNavItem.tsx @@ -1,4 +1,4 @@ -import React, { MouseEventHandler, forwardRef, useState } from 'react'; +import React, { MouseEventHandler, forwardRef, useState, MouseEvent } from 'react'; import { Room } from 'matrix-js-sdk'; import { Avatar, @@ -196,6 +196,7 @@ const RoomNavItemMenu = forwardRef( ); } ); +RoomNavItemMenu.displayName = 'RoomNavItemMenu'; type RoomNavItemProps = { room: Room; @@ -220,7 +221,7 @@ export function RoomNavItem({ const { focusWithinProps } = useFocusWithin({ onFocusWithinChange: setHover }); const [menuAnchor, setMenuAnchor] = useState(); const unread = useRoomUnread(room.roomId, roomToUnreadAtom); - const { isChatOpen, toggleChat } = useCallState(); + const { isChatOpen, toggleChat, hangUp } = useCallState(); const typingMember = useRoomTypingMember(room.roomId).filter( (receipt) => receipt.userId !== mx.getUserId() ); @@ -239,6 +240,25 @@ export function RoomNavItem({ setMenuAnchor(evt.currentTarget.getBoundingClientRect()); }; + const handleNavItemClick: MouseEventHandler = (evt) => { + const target = evt.target as HTMLElement; + const chatButton = (evt.currentTarget as HTMLElement).querySelector( + '[data-testid="chat-button"]' + ); + if (chatButton && chatButton.contains(target)) { + return; + } + + if (room.isCallRoom()) { + hangUp(); + } + }; + + const handleChatButtonClick = (e: MouseEvent) => { + e.stopPropagation(); + if (!isChatOpen) toggleChat(); + }; + const optionsVisible = hover || !!menuAnchor; return ( @@ -252,7 +272,8 @@ export function RoomNavItem({ {...hoverProps} {...focusWithinProps} > - + + {' '} @@ -343,8 +364,9 @@ export function RoomNavItem({ {(triggerRef) => (