From 6589e5dab906c8ad3591c3c51892be45c8113ec7 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Tue, 13 Aug 2019 18:13:47 +0100 Subject: [PATCH] Fix showing events which were replied to and then redacted --- src/components/views/elements/ReplyThread.js | 27 ++++++++++++++++---- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/src/components/views/elements/ReplyThread.js b/src/components/views/elements/ReplyThread.js index ab7b1abb1c..d8955a9f28 100644 --- a/src/components/views/elements/ReplyThread.js +++ b/src/components/views/elements/ReplyThread.js @@ -176,6 +176,9 @@ export default class ReplyThread extends React.Component { componentWillMount() { this.unmounted = false; this.room = this.context.matrixClient.getRoom(this.props.parentEv.getRoomId()); + this.room.on("Room.redaction", this.onRoomRedaction); + // same event handler as Room.redaction as for both we just do forceUpdate + this.room.on("Room.redactionCancelled", this.onRoomRedaction); this.initialize(); } @@ -185,8 +188,20 @@ export default class ReplyThread extends React.Component { componentWillUnmount() { this.unmounted = true; + if (this.room) { + this.room.removeListener("Room.redaction", this.onRoomRedaction); + this.room.removeListener("Room.redactionCancelled", this.onRoomRedaction); + } } + onRoomRedaction = (ev, room) => { + if (this.unmounted) return; + + // we could skip an update if the event isn't in our timeline, + // but that's probably an early optimisation. + this.forceUpdate(); + }; + async initialize() { const {parentEv} = this.props; // at time of making this component we checked that props.parentEv has a parentEventId @@ -298,11 +313,13 @@ export default class ReplyThread extends React.Component { return
{ dateSep } - +
; });