From 4b463e3e50177c066cacb95ed669ac987e85d391 Mon Sep 17 00:00:00 2001 From: 7w1 Date: Sat, 21 Mar 2026 12:43:00 -0500 Subject: [PATCH] add a pmp rerender trigger on incoming event decryption --- .changeset/fix-encrypted-pmp.md | 5 +++++ src/app/features/room/message/Message.tsx | 14 ++++++++------ 2 files changed, 13 insertions(+), 6 deletions(-) create mode 100644 .changeset/fix-encrypted-pmp.md diff --git a/.changeset/fix-encrypted-pmp.md b/.changeset/fix-encrypted-pmp.md new file mode 100644 index 000000000..43009c7b7 --- /dev/null +++ b/.changeset/fix-encrypted-pmp.md @@ -0,0 +1,5 @@ +--- +default: patch +--- + +Fix recieved encrypted message per-message profiles not triggering rerenders. diff --git a/src/app/features/room/message/Message.tsx b/src/app/features/room/message/Message.tsx index 106c6cbf8..7ea97894e 100644 --- a/src/app/features/room/message/Message.tsx +++ b/src/app/features/room/message/Message.tsx @@ -14,7 +14,6 @@ import { as, config, } from 'folds'; - import { MouseEventHandler, MouseEvent, @@ -35,6 +34,7 @@ import { Room, Relations, RoomPinnedEventsEventContent, + MatrixEventEvent, } from '$types/matrix-sdk'; import classNames from 'classnames'; import { useAtomValue, useSetAtom } from 'jotai'; @@ -380,13 +380,15 @@ function MessageInternal( const mx = useMatrixClient(); const useAuthentication = useMediaAuthentication(); - const [editVersion, setEditVersion] = useState(0); + const [contentVersion, setContentVersion] = useState(0); useEffect(() => { - const onReplaced = () => setEditVersion((v) => v + 1); - mEvent.on('Event.replaced' as any, onReplaced); + const onUpdate = () => setContentVersion((v) => v + 1); + mEvent.on(MatrixEventEvent.Decrypted, onUpdate); + mEvent.on(MatrixEventEvent.Replaced, onUpdate); return () => { - mEvent.off('Event.replaced' as any, onReplaced); + mEvent.off(MatrixEventEvent.Decrypted, onUpdate); + mEvent.off(MatrixEventEvent.Replaced, onUpdate); }; }, [mEvent]); @@ -411,7 +413,7 @@ function MessageInternal( | PerMessageProfileBeeperFormat | undefined; // eslint-disable-next-line react-hooks/exhaustive-deps - }, [mEvent, room, editVersion]); + }, [mEvent, room, contentVersion]); /** * We convert the per-message profile from the Beeper format to our internal format here in the message component