Fix showing events which were replied to and then redacted

This commit is contained in:
Michael Telatynski 2019-08-13 18:13:47 +01:00
parent 831da696ad
commit 6589e5dab9

View file

@ -176,6 +176,9 @@ export default class ReplyThread extends React.Component {
componentWillMount() { componentWillMount() {
this.unmounted = false; this.unmounted = false;
this.room = this.context.matrixClient.getRoom(this.props.parentEv.getRoomId()); 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(); this.initialize();
} }
@ -185,7 +188,19 @@ export default class ReplyThread extends React.Component {
componentWillUnmount() { componentWillUnmount() {
this.unmounted = true; 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() { async initialize() {
const {parentEv} = this.props; const {parentEv} = this.props;
@ -298,10 +313,12 @@ export default class ReplyThread extends React.Component {
return <blockquote className="mx_ReplyThread" key={ev.getId()}> return <blockquote className="mx_ReplyThread" key={ev.getId()}>
{ dateSep } { dateSep }
<EventTile mxEvent={ev} <EventTile
mxEvent={ev}
tileShape="reply" tileShape="reply"
onHeightChanged={this.props.onHeightChanged} onHeightChanged={this.props.onHeightChanged}
permalinkCreator={this.props.permalinkCreator} permalinkCreator={this.props.permalinkCreator}
isRedacted={ev.isRedacted()}
isTwelveHour={SettingsStore.getValue("showTwelveHourTimestamps")} /> isTwelveHour={SettingsStore.getValue("showTwelveHourTimestamps")} />
</blockquote>; </blockquote>;
}); });