From f67bde766c888aec61b2ba94e2848e56feb95de8 Mon Sep 17 00:00:00 2001 From: Septicity Date: Thu, 2 Apr 2026 00:26:46 -0500 Subject: [PATCH] fix: Revert MessageReadReceiptItem to pre-Modal form so that the pop-up is scrollable again (temporary) --- src/app/features/room/message/Message.tsx | 95 ++++++++++++++++++----- 1 file changed, 77 insertions(+), 18 deletions(-) diff --git a/src/app/features/room/message/Message.tsx b/src/app/features/room/message/Message.tsx index 4bfab3bbb..9ca07b0e3 100644 --- a/src/app/features/room/message/Message.tsx +++ b/src/app/features/room/message/Message.tsx @@ -2,16 +2,26 @@ import { Avatar, Box, Chip, + Button, + Dialog, + Header, Icon, IconButton, Icons, + Input, Line, Menu, MenuItem, + Modal, + Overlay, + OverlayBackdrop, + OverlayCenter, PopOut, RectCords, + Spinner, Text, as, + color, config, } from 'folds'; import { @@ -57,6 +67,7 @@ import { getSettings, MessageLayout, MessageSpacing, settingsAtom } from '$state import { nicknamesAtom, setNicknameAtom } from '$state/nicknames'; import { useMatrixClient } from '$hooks/useMatrixClient'; import { useRecentEmoji } from '$hooks/useRecentEmoji'; +import { EventReaders } from '../../../components/event-readers'; import { EmojiBoard } from '$components/emoji-board'; import { UserAvatar } from '$components/user-avatar'; import { copyToClipboard } from '$utils/dom'; @@ -75,7 +86,6 @@ import { useUserProfile } from '$hooks/useUserProfile'; import { useSetting } from '$state/hooks/settings'; import { useBlobCache } from '$hooks/useBlobCache'; import { MessageAllReactionItem } from '$components/message/modals/MessageReactions'; -import { MessageReadReceiptItem } from '$components/message/modals/MessageReadRecipts'; import { MessageEditHistoryItem } from '$components/message/modals/MessageEditHistory'; import { MessageSourceCodeItem } from '$components/message/modals/MessageSource'; import { MessageForwardItem } from '$components/message/modals/MessageForward'; @@ -134,9 +144,59 @@ export const MessageQuickReactions = as<'div', MessageQuickReactionsProps>( ); - } + }, ); +export const MessageReadReceiptItem = as< + 'button', + { + room: Room; + eventId: string; + onClose?: () => void; + } +>(({ room, eventId, onClose, ...props }, ref) => { + const [open, setOpen] = useState(false); + + const handleClose = () => { + setOpen(false); + onClose?.(); + }; + + return ( + <> + }> + + + + + + + + + } + radii="300" + onClick={() => setOpen(true)} + {...props} + ref={ref} + aria-pressed={open} + > + + Read Receipts + + + + ); +}); + export const MessageCopyLinkItem = as< 'button', { @@ -242,7 +302,7 @@ export type MessageProps = { onUsernameClick: MouseEventHandler; onReplyClick: ( ev: Parameters>[0], - startThread?: boolean + startThread?: boolean, ) => void; onEditId?: (eventId?: string) => void; onReactionToggle: (targetEventId: string, key: string, shortcode?: string) => void; @@ -282,7 +342,7 @@ function useMobileDoubleTap(callback: () => void, delay = 300) { lastTapRef.current = now; } }, - [callback, delay] + [callback, delay], ); } @@ -315,7 +375,7 @@ const Pronouns = as< const visiblePronouns = filterPronounsByLanguage( pronouns, languageFilterEnabled, - selectedLanguages + selectedLanguages, ); const clamp = (str: string, len: number) => (str.length > len ? `${str.slice(0, len)}...` : str); @@ -377,7 +437,7 @@ function MessageInternal( msc2723ForwardedMessageProps, ...props }: MessageProps & { className?: string; children?: ReactNode }, - ref: any + ref: any, ) { const mx = useMatrixClient(); const useAuthentication = useMediaAuthentication(); @@ -396,11 +456,6 @@ function MessageInternal( triggerTimelineRegroup(); }; - if (mEvent.getClearContent()) { - setContentVersion((v) => (v === 0 ? 1 : v)); - triggerTimelineRegroup(); - } - mEvent.on(MatrixEventEvent.Decrypted, onUpdate); mEvent.on(MatrixEventEvent.Replaced, onUpdate); return () => { @@ -666,7 +721,7 @@ function MessageInternal( evt.stopPropagation(); onResend?.(mEvent); }, - [mEvent, onResend] + [mEvent, onResend], ); const handleDeleteFailedSendClick: MouseEventHandler = useCallback( @@ -675,7 +730,7 @@ function MessageInternal( evt.stopPropagation(); onDeleteFailedSend?.(mEvent); }, - [mEvent, onDeleteFailedSend] + [mEvent, onDeleteFailedSend], ); const MSG_CONTENT_STYLE = { maxWidth: '100%' }; @@ -989,7 +1044,7 @@ function MessageInternal( `sticker-${mEvent.getId()}`, mEvent.getContent().url ?? mEvent.getContent().file?.url ?? '', mEvent.getContent().body, - mEvent.getContent().info + mEvent.getContent().info, ); closeMenu(); }} @@ -1062,7 +1117,11 @@ function MessageInternal( )} {!hideReadReceipts && ( - + )} {isEdited && ( >[0], - startThread?: boolean + startThread?: boolean, ) => void; messageSpacing: MessageSpacing; hideReadReceipts?: boolean; @@ -1261,7 +1320,7 @@ export const Event = as<'div', EventProps>( children, ...props }, - ref + ref, ) => { const mx = useMatrixClient(); const stateEvent = typeof mEvent.getStateKey() === 'string'; @@ -1457,5 +1516,5 @@ export const Event = as<'div', EventProps>( ); - } + }, );