This commit is contained in:
Matthew Hodgson 2016-07-17 18:32:48 +01:00
parent bfe50c209c
commit 2bc9dd4307
2 changed files with 29 additions and 7 deletions

View file

@ -37,12 +37,31 @@ module.exports = React.createClass({
}, },
componentWillMount: function() { componentWillMount: function() {
this._room = MatrixClientPeg.get().getRoom(this.props.roomId); var cli = MatrixClientPeg.get();
cli.on("RoomState.members", this.onRoomStateMember);
this._emailEntity = null; this._emailEntity = null;
// we have to update the list whenever membership changes
// particularly to avoid bug https://github.com/vector-im/vector-web/issues/1813
this._updateList();
},
componentDidMount: function() {
// initialise the email tile
this.onSearchQueryChanged('');
},
componentWillUnmount: function() {
var cli = MatrixClientPeg.get();
if (cli) {
cli.removeListener("RoomState.members", this.onRoomStateMember);
}
},
_updateList: function() {
this._room = MatrixClientPeg.get().getRoom(this.props.roomId);
// Load the complete user list for inviting new users // Load the complete user list for inviting new users
// TODO: Keep this list bleeding-edge up-to-date. Practically speaking,
// it will do for now not being updated as random new users join different
// rooms as this list will be reloaded every room swap.
if (this._room) { if (this._room) {
this._userList = MatrixClientPeg.get().getUsers().filter((u) => { this._userList = MatrixClientPeg.get().getUsers().filter((u) => {
return !this._room.hasMembershipState(u.userId, "join"); return !this._room.hasMembershipState(u.userId, "join");
@ -50,9 +69,8 @@ module.exports = React.createClass({
} }
}, },
componentDidMount: function() { onRoomStateMember: function(ev, state, member) {
// initialise the email tile this._updateList();
this.onSearchQueryChanged('');
}, },
onInvite: function(ev) { onInvite: function(ev) {

View file

@ -69,6 +69,10 @@ function createRoom(opts) {
return client.createRoom(createOpts).finally(function() { return client.createRoom(createOpts).finally(function() {
modal.close(); modal.close();
}).then(function(res) { }).then(function(res) {
// NB createRoom doesn't block on the client seeing the echo that the
// room has been created, so we race here with the client knowing that
// the room exists, causing things like
// https://github.com/vector-im/vector-web/issues/1813
dis.dispatch({ dis.dispatch({
action: 'view_room', action: 'view_room',
room_id: res.room_id room_id: res.room_id