diff --git a/src/components/views/rooms/RoomHeader.js b/src/components/views/rooms/RoomHeader.js index 45e5a79a24..3e237a8f95 100644 --- a/src/components/views/rooms/RoomHeader.js +++ b/src/components/views/rooms/RoomHeader.js @@ -48,12 +48,33 @@ module.exports = React.createClass({ }; }, + componentDidMount: function() { + var cli = MatrixClientPeg.get(); + cli.on("RoomState.events", this._onRoomStateEvents); + }, + componentDidUpdate: function() { if (this.refs.topic) { linkifyElement(this.refs.topic, linkifyMatrix.options); } }, + componentWillUnmount: function() { + var cli = MatrixClientPeg.get(); + if (cli) { + cli.removeListener("RoomState.events", this._onRoomStateEvents); + } + }, + + _onRoomStateEvents: function(event, state) { + if (!this.props.room || event.getRoomId() != this.props.room.roomId) { + return; + } + + // redisplay the room name, topic, etc. + this.forceUpdate(); + }, + onAvatarPickerClick: function(ev) { if (this.refs.file_label) { this.refs.file_label.click();