diff --git a/src/components/structures/RoomView.js b/src/components/structures/RoomView.js index 4a3666fc38..c68b10d33f 100644 --- a/src/components/structures/RoomView.js +++ b/src/components/structures/RoomView.js @@ -182,6 +182,7 @@ export default createReactClass({ this.context.on("crypto.keyBackupStatus", this.onKeyBackupStatus); this.context.on("deviceVerificationChanged", this.onDeviceVerificationChanged); this.context.on("userTrustStatusChanged", this.onUserVerificationChanged); + this.context.on("crossSigning.keysChanged", this.onCrossSigningKeysChanged); // Start listening for RoomViewStore updates this._roomStoreToken = RoomViewStore.addListener(this._onRoomViewStoreUpdate); this._rightPanelStoreToken = RightPanelStore.getSharedInstance().addListener(this._onRightPanelStoreUpdate); @@ -504,6 +505,7 @@ export default createReactClass({ this.context.removeListener("crypto.keyBackupStatus", this.onKeyBackupStatus); this.context.removeListener("deviceVerificationChanged", this.onDeviceVerificationChanged); this.context.removeListener("userTrustStatusChanged", this.onUserVerificationChanged); + this.context.removeListener("crossSigning.keysChanged", this.onCrossSigningKeysChanged); } window.removeEventListener('beforeunload', this.onPageUnload); @@ -805,6 +807,13 @@ export default createReactClass({ this._updateE2EStatus(room); }, + onCrossSigningKeysChanged: function() { + const room = this.state.room; + if (room) { + this._updateE2EStatus(room); + } + }, + _updateE2EStatus: async function(room) { if (!this.context.isRoomEncrypted(room.roomId)) { return; diff --git a/src/components/views/rooms/RoomTile.js b/src/components/views/rooms/RoomTile.js index 0b06be48af..d264b087a0 100644 --- a/src/components/views/rooms/RoomTile.js +++ b/src/components/views/rooms/RoomTile.js @@ -130,6 +130,10 @@ export default createReactClass({ this._updateE2eStatus(); }, + onCrossSigningKeysChanged: function() { + this._updateE2eStatus(); + }, + onRoomTimeline: function(ev, room) { if (!room) return; if (room.roomId != this.props.room.roomId) return; @@ -142,7 +146,7 @@ export default createReactClass({ const cli = MatrixClientPeg.get(); cli.on("RoomState.members", this.onRoomStateMember); cli.on("userTrustStatusChanged", this.onUserVerificationChanged); - + cli.on("crossSigning.keysChanged", this.onCrossSigningKeysChanged); this._updateE2eStatus(); }, @@ -267,6 +271,7 @@ export default createReactClass({ cli.removeListener("RoomState.events", this.onJoinRule); cli.removeListener("RoomState.members", this.onRoomStateMember); cli.removeListener("userTrustStatusChanged", this.onUserVerificationChanged); + cli.removeListener("crossSigning.keysChanged", this.onCrossSigningKeysChanged); cli.removeListener("Room.timeline", this.onRoomTimeline); } ActiveRoomObserver.removeListener(this.props.room.roomId, this._onActiveRoomChange);