Force update on timelinepanel when event decrypted
Partially fixes https://github.com/vector-im/riot-web/issues/4865 (the part about messages not appearing in the timeline until you move the cursor over the window). Requires https://github.com/matrix-org/matrix-js-sdk/pull/529
This commit is contained in:
parent
737a258944
commit
67824e9acc
1 changed files with 12 additions and 0 deletions
|
@ -197,6 +197,7 @@ var TimelinePanel = React.createClass({
|
||||||
MatrixClientPeg.get().on("Room.receipt", this.onRoomReceipt);
|
MatrixClientPeg.get().on("Room.receipt", this.onRoomReceipt);
|
||||||
MatrixClientPeg.get().on("Room.localEchoUpdated", this.onLocalEchoUpdated);
|
MatrixClientPeg.get().on("Room.localEchoUpdated", this.onLocalEchoUpdated);
|
||||||
MatrixClientPeg.get().on("Room.accountData", this.onAccountData);
|
MatrixClientPeg.get().on("Room.accountData", this.onAccountData);
|
||||||
|
MatrixClientPeg.get().on("Event.decrypted", this.onEventDecrypted);
|
||||||
MatrixClientPeg.get().on("sync", this.onSync);
|
MatrixClientPeg.get().on("sync", this.onSync);
|
||||||
|
|
||||||
this._initTimeline(this.props);
|
this._initTimeline(this.props);
|
||||||
|
@ -266,6 +267,7 @@ var TimelinePanel = React.createClass({
|
||||||
client.removeListener("Room.receipt", this.onRoomReceipt);
|
client.removeListener("Room.receipt", this.onRoomReceipt);
|
||||||
client.removeListener("Room.localEchoUpdated", this.onLocalEchoUpdated);
|
client.removeListener("Room.localEchoUpdated", this.onLocalEchoUpdated);
|
||||||
client.removeListener("Room.accountData", this.onAccountData);
|
client.removeListener("Room.accountData", this.onAccountData);
|
||||||
|
client.removeListener("Event.decrypted", this.onEventDecrypted);
|
||||||
client.removeListener("sync", this.onSync);
|
client.removeListener("sync", this.onSync);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -503,6 +505,16 @@ var TimelinePanel = React.createClass({
|
||||||
}, this.props.onReadMarkerUpdated);
|
}, this.props.onReadMarkerUpdated);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
onEventDecrypted: function(ev) {
|
||||||
|
// Need to update as we don't display event tiles for events that
|
||||||
|
// haven't yet been decrypted. The event will have just been updated
|
||||||
|
// in place so we just need to re-render.
|
||||||
|
// TODO: We should restrict this to only events in our timeline,
|
||||||
|
// but possibly the event tile itself should just update when this
|
||||||
|
// happens to save us re-rendering the whole timeline.
|
||||||
|
this.forceUpdate();
|
||||||
|
},
|
||||||
|
|
||||||
onSync: function(state, prevState, data) {
|
onSync: function(state, prevState, data) {
|
||||||
this.setState({clientSyncState: state});
|
this.setState({clientSyncState: state});
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in a new issue