diff --git a/src/app/features/room/message/Message.tsx b/src/app/features/room/message/Message.tsx index 148b75aa..a2f169f1 100644 --- a/src/app/features/room/message/Message.tsx +++ b/src/app/features/room/message/Message.tsx @@ -80,9 +80,9 @@ import { StateEvent } from '../../../../types/matrix/room'; import { getTagIconSrc, PowerLevelTag } from '../../../hooks/usePowerLevelTags'; import { PowerIcon } from '../../../components/power'; import colorMXID from '../../../../util/colorMXID'; -import { MessageDropdownMenu, MessageOptionsMenu } from '../MessageOptionsMenu'; -import { BottomSheetMenu } from '../MobileClickMenu'; +import { MessageDropdownMenu, MessageOptionsMenu, BottomSheetMenu } from '../MessageOptionsMenu'; import { ScreenSize, useScreenSizeContext } from '../../../hooks/useScreenSize'; +import { DraggableMessage } from './DraggableMessage'; export type ReactionHandler = (keyOrMxc: string, shortcode: string) => void; @@ -719,13 +719,13 @@ export const Message = as<'div', MessageProps>( const useAuthentication = useMediaAuthentication(); const senderId = mEvent.getSender() ?? ''; const { hoverProps, isHovered } = useHover({}); - const { focusWithinProps, isFocusWithin } = useFocusWithin({}); + const { focusWithinProps } = useFocusWithin({}); const [menuAnchor, setMenuAnchor] = useState(); const [emojiBoardAnchor, setEmojiBoardAnchor] = useState(); const screenSize = useScreenSizeContext(); const isMobile = screenSize === ScreenSize.Mobile; const [isDesktopOptionsActive, setDesktopOptionsActive] = useState(false); - const showDesktopOptions = !isMobile && (isHovered || isFocusWithin || isDesktopOptionsActive); + //const showDesktopOptions = !isMobile && (isHovered || isFocusWithin || isDesktopOptionsActive); const [isMobileSheetOpen, setMobileSheetOpen] = useState(false); const senderDisplayName = getMemberDisplayName(room, senderId) ?? getMxIdLocalPart(senderId) ?? senderId; @@ -764,6 +764,10 @@ export const Message = as<'div', MessageProps>( handleClose(); }; + // TODO: Remove this and clean it up later... + const button = document.createElement('button'); + button.setAttribute('data-event-id', mEvent.getId()); + const tagColor = powerLevelTag?.color ? accessibleTagColors?.get(powerLevelTag.color) : undefined; @@ -926,23 +930,90 @@ export const Message = as<'div', MessageProps>( handleOpenMenu={handleOpenMenu} /> )} - {messageLayout === MessageLayout.Compact && ( - - {msgContentJSX} - - )} - {messageLayout === MessageLayout.Bubble && ( - - {headerJSX} - {msgContentJSX} - - )} - {messageLayout !== MessageLayout.Compact && messageLayout !== MessageLayout.Bubble && ( - - {headerJSX} - {msgContentJSX} - - )} + {messageLayout === MessageLayout.Compact && + (!isMobile ? ( + + {msgContentJSX} + + ) : ( + { + const mockTargetElement = document.createElement('button'); + mockTargetElement.setAttribute('data-event-id', mEvent.getId()); + const mockEvent = { + currentTarget: mockTargetElement, + }; + + onReplyClick(mockEvent); + }} + onEdit={() => { + onEditId(mEvent.getId()); + }} + mx={mx} + > + + {msgContentJSX} + + + ))} + {messageLayout === MessageLayout.Bubble && + (!isMobile ? ( + + {msgContentJSX} + + ) : ( + { + const mockTargetElement = document.createElement('button'); + mockTargetElement.setAttribute('data-event-id', mEvent.getId()); + const mockEvent = { + currentTarget: mockTargetElement, + }; + + onReplyClick(mockEvent); + }} + onEdit={() => { + onEditId(mEvent.getId()); + }} + mx={mx} + > + + {msgContentJSX} + + + ))} + {messageLayout !== MessageLayout.Compact && + messageLayout !== MessageLayout.Bubble && + (!isMobile ? ( + + {headerJSX} + {msgContentJSX} + + ) : ( + { + const mockTargetElement = document.createElement('button'); + mockTargetElement.setAttribute('data-event-id', mEvent.getId()); + const mockEvent = { + currentTarget: mockTargetElement, + }; + + onReplyClick(mockEvent); + }} + onEdit={() => { + onEditId(mEvent.getId()); + }} + mx={mx} + > + + {headerJSX} + {msgContentJSX} + + + ))} {isMobile && ( @@ -954,7 +1025,6 @@ export const Message = as<'div', MessageProps>( setMobileSheetOpen(false); }} mEvent={mEvent} - eventId={mEvent.getId()} room={room} mx={mx} relations={relations}