Skip to content

Commit 1740594

Browse files
committed
fix: Revert MessageReadReceiptItem to pre-Modal form so that the pop-up is scrollable again (temporary)
1 parent 93165ad commit 1740594

1 file changed

Lines changed: 77 additions & 13 deletions

File tree

src/app/features/room/message/Message.tsx

Lines changed: 77 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,26 @@ import {
22
Avatar,
33
Box,
44
Chip,
5+
Button,
6+
Dialog,
7+
Header,
58
Icon,
69
IconButton,
710
Icons,
11+
Input,
812
Line,
913
Menu,
1014
MenuItem,
15+
Modal,
16+
Overlay,
17+
OverlayBackdrop,
18+
OverlayCenter,
1119
PopOut,
1220
RectCords,
21+
Spinner,
1322
Text,
1423
as,
24+
color,
1525
config,
1626
} from 'folds';
1727
import {
@@ -57,6 +67,7 @@ import { getSettings, MessageLayout, MessageSpacing, settingsAtom } from '$state
5767
import { nicknamesAtom, setNicknameAtom } from '$state/nicknames';
5868
import { useMatrixClient } from '$hooks/useMatrixClient';
5969
import { useRecentEmoji } from '$hooks/useRecentEmoji';
70+
import { EventReaders } from '../../../components/event-readers';
6071
import { EmojiBoard } from '$components/emoji-board';
6172
import { UserAvatar } from '$components/user-avatar';
6273
import { copyToClipboard } from '$utils/dom';
@@ -75,7 +86,6 @@ import { useUserProfile } from '$hooks/useUserProfile';
7586
import { useSetting } from '$state/hooks/settings';
7687
import { useBlobCache } from '$hooks/useBlobCache';
7788
import { MessageAllReactionItem } from '$components/message/modals/MessageReactions';
78-
import { MessageReadReceiptItem } from '$components/message/modals/MessageReadRecipts';
7989
import { MessageEditHistoryItem } from '$components/message/modals/MessageEditHistory';
8090
import { MessageSourceCodeItem } from '$components/message/modals/MessageSource';
8191
import { MessageForwardItem } from '$components/message/modals/MessageForward';
@@ -134,9 +144,59 @@ export const MessageQuickReactions = as<'div', MessageQuickReactionsProps>(
134144
<Line size="300" />
135145
</>
136146
);
137-
}
147+
},
138148
);
139149

150+
export const MessageReadReceiptItem = as<
151+
'button',
152+
{
153+
room: Room;
154+
eventId: string;
155+
onClose?: () => void;
156+
}
157+
>(({ room, eventId, onClose, ...props }, ref) => {
158+
const [open, setOpen] = useState(false);
159+
160+
const handleClose = () => {
161+
setOpen(false);
162+
onClose?.();
163+
};
164+
165+
return (
166+
<>
167+
<Overlay open={open} backdrop={<OverlayBackdrop />}>
168+
<OverlayCenter>
169+
<FocusTrap
170+
focusTrapOptions={{
171+
initialFocus: false,
172+
onDeactivate: handleClose,
173+
clickOutsideDeactivates: true,
174+
escapeDeactivates: stopPropagation,
175+
}}
176+
>
177+
<Modal variant="Surface" size="300">
178+
<EventReaders room={room} eventId={eventId} requestClose={handleClose} />
179+
</Modal>
180+
</FocusTrap>
181+
</OverlayCenter>
182+
</Overlay>
183+
<MenuItem
184+
size="300"
185+
after={<Icon size="100" src={Icons.CheckTwice} />}
186+
radii="300"
187+
onClick={() => setOpen(true)}
188+
{...props}
189+
ref={ref}
190+
aria-pressed={open}
191+
>
192+
<Text className={css.MessageMenuItemText} as="span" size="T300" truncate>
193+
Read Receipts
194+
</Text>
195+
</MenuItem>
196+
</>
197+
);
198+
});
199+
140200
export const MessageCopyLinkItem = as<
141201
'button',
142202
{
@@ -242,7 +302,7 @@ export type MessageProps = {
242302
onUsernameClick: MouseEventHandler<HTMLButtonElement>;
243303
onReplyClick: (
244304
ev: Parameters<MouseEventHandler<HTMLButtonElement>>[0],
245-
startThread?: boolean
305+
startThread?: boolean,
246306
) => void;
247307
onEditId?: (eventId?: string) => void;
248308
onReactionToggle: (targetEventId: string, key: string, shortcode?: string) => void;
@@ -282,7 +342,7 @@ function useMobileDoubleTap(callback: () => void, delay = 300) {
282342
lastTapRef.current = now;
283343
}
284344
},
285-
[callback, delay]
345+
[callback, delay],
286346
);
287347
}
288348

@@ -315,7 +375,7 @@ const Pronouns = as<
315375
const visiblePronouns = filterPronounsByLanguage(
316376
pronouns,
317377
languageFilterEnabled,
318-
selectedLanguages
378+
selectedLanguages,
319379
);
320380

321381
const clamp = (str: string, len: number) => (str.length > len ? `${str.slice(0, len)}...` : str);
@@ -377,7 +437,7 @@ function MessageInternal(
377437
msc2723ForwardedMessageProps,
378438
...props
379439
}: MessageProps & { className?: string; children?: ReactNode },
380-
ref: any
440+
ref: any,
381441
) {
382442
const mx = useMatrixClient();
383443
const useAuthentication = useMediaAuthentication();
@@ -661,7 +721,7 @@ function MessageInternal(
661721
evt.stopPropagation();
662722
onResend?.(mEvent);
663723
},
664-
[mEvent, onResend]
724+
[mEvent, onResend],
665725
);
666726

667727
const handleDeleteFailedSendClick: MouseEventHandler<HTMLButtonElement> = useCallback(
@@ -670,7 +730,7 @@ function MessageInternal(
670730
evt.stopPropagation();
671731
onDeleteFailedSend?.(mEvent);
672732
},
673-
[mEvent, onDeleteFailedSend]
733+
[mEvent, onDeleteFailedSend],
674734
);
675735

676736
const MSG_CONTENT_STYLE = { maxWidth: '100%' };
@@ -984,7 +1044,7 @@ function MessageInternal(
9841044
`sticker-${mEvent.getId()}`,
9851045
mEvent.getContent().url ?? mEvent.getContent().file?.url ?? '',
9861046
mEvent.getContent().body,
987-
mEvent.getContent().info
1047+
mEvent.getContent().info,
9881048
);
9891049
closeMenu();
9901050
}}
@@ -1057,7 +1117,11 @@ function MessageInternal(
10571117
</MenuItem>
10581118
)}
10591119
{!hideReadReceipts && (
1060-
<MessageReadReceiptItem room={room} eventId={mEvent.getId() ?? ''} />
1120+
<MessageReadReceiptItem
1121+
room={room}
1122+
eventId={mEvent.getId() ?? ''}
1123+
onClose={closeMenu}
1124+
/>
10611125
)}
10621126
{isEdited && (
10631127
<MessageEditHistoryItem
@@ -1232,7 +1296,7 @@ export type EventProps = {
12321296
canDelete?: boolean;
12331297
onReplyClick: (
12341298
ev: Parameters<MouseEventHandler<HTMLButtonElement>>[0],
1235-
startThread?: boolean
1299+
startThread?: boolean,
12361300
) => void;
12371301
messageSpacing: MessageSpacing;
12381302
hideReadReceipts?: boolean;
@@ -1256,7 +1320,7 @@ export const Event = as<'div', EventProps>(
12561320
children,
12571321
...props
12581322
},
1259-
ref
1323+
ref,
12601324
) => {
12611325
const mx = useMatrixClient();
12621326
const stateEvent = typeof mEvent.getStateKey() === 'string';
@@ -1452,5 +1516,5 @@ export const Event = as<'div', EventProps>(
14521516
</div>
14531517
</MessageBase>
14541518
);
1455-
}
1519+
},
14561520
);

0 commit comments

Comments
 (0)