Make sure that we update the room name

It turns out that RoomState.events is fired before Room.name is updated; make
sure that we pick up the latter and do the update.
This commit is contained in:
Richard van der Hoff 2016-04-15 09:59:23 +01:00
parent 3fd9b29422
commit 8680afe46f

View file

@ -52,6 +52,13 @@ module.exports = React.createClass({
componentDidMount: function() { componentDidMount: function() {
var cli = MatrixClientPeg.get(); var cli = MatrixClientPeg.get();
cli.on("RoomState.events", this._onRoomStateEvents); cli.on("RoomState.events", this._onRoomStateEvents);
// When a room name occurs, RoomState.events is fired *before*
// room.name is updated. So we have to listen to Room.name as well as
// RoomState.events.
if (this.props.room) {
this.props.room.on("Room.name", this._onRoomNameChange);
}
}, },
componentDidUpdate: function() { componentDidUpdate: function() {
@ -61,6 +68,9 @@ module.exports = React.createClass({
}, },
componentWillUnmount: function() { componentWillUnmount: function() {
if (this.props.room) {
this.props.room.removeListener("Room.name", this._onRoomNameChange);
}
var cli = MatrixClientPeg.get(); var cli = MatrixClientPeg.get();
if (cli) { if (cli) {
cli.removeListener("RoomState.events", this._onRoomStateEvents); cli.removeListener("RoomState.events", this._onRoomStateEvents);
@ -76,6 +86,10 @@ module.exports = React.createClass({
this.forceUpdate(); this.forceUpdate();
}, },
_onRoomNameChange: function(room) {
this.forceUpdate();
},
onAvatarPickerClick: function(ev) { onAvatarPickerClick: function(ev) {
if (this.refs.file_label) { if (this.refs.file_label) {
this.refs.file_label.click(); this.refs.file_label.click();
@ -97,7 +111,7 @@ module.exports = React.createClass({
description: "Failed to set avatar. " + errMsg description: "Failed to set avatar. " + errMsg
}); });
}).done(); }).done();
}, },
/** /**
* After editing the settings, get the new name for the room * After editing the settings, get the new name for the room
@ -266,7 +280,7 @@ module.exports = React.createClass({
var right_row; var right_row;
if (!this.props.editing) { if (!this.props.editing) {
right_row = right_row =
<div className="mx_RoomHeader_rightRow"> <div className="mx_RoomHeader_rightRow">
{ forget_button } { forget_button }
{ leave_button } { leave_button }