hopefully fix vector-im/vector-web#1813
This commit is contained in:
parent
bfe50c209c
commit
2bc9dd4307
2 changed files with 29 additions and 7 deletions
|
@ -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) {
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue