diff --git a/src/components/views/rooms/RoomList.js b/src/components/views/rooms/RoomList.js index b70c4a994e..fc1872249f 100644 --- a/src/components/views/rooms/RoomList.js +++ b/src/components/views/rooms/RoomList.js @@ -91,19 +91,22 @@ module.exports = React.createClass({ // All rooms that should be kept in the room list when filtering. // By default, show all rooms. this._visibleRooms = MatrixClientPeg.get().getRooms(); - // When the selected tags are changed, initialise a group store if necessary - this._tagStoreToken = TagOrderStore.addListener(() => { + + // Listen to updates to group data. RoomList cares about members and rooms in order + // to filter the room list when group tags are selected. + this._groupStoreToken = GroupStore.registerListener(null, () => { (TagOrderStore.getOrderedTags() || []).forEach((tag) => { if (tag[0] !== '+') { return; } - this._groupStoreToken = GroupStore.registerListener(tag, () => { - // This group's rooms or members may have updated, update rooms for its tag - this.updateVisibleRoomsForTag(dmRoomMap, tag); - this.updateVisibleRooms(); - }); + // This group's rooms or members may have updated, update rooms for its tag + this.updateVisibleRoomsForTag(dmRoomMap, tag); + this.updateVisibleRooms(); }); - // Filters themselves have changed, refresh the selected tags + }); + + this._tagStoreToken = TagOrderStore.addListener(() => { + // Filters themselves have changed this.updateVisibleRooms(); }); diff --git a/src/stores/GroupStore.js b/src/stores/GroupStore.js index 49596550ea..b0c7f8f19f 100644 --- a/src/stores/GroupStore.js +++ b/src/stores/GroupStore.js @@ -183,10 +183,12 @@ class GroupStore extends EventEmitter { // Call to set initial state (before fetching starts) this.emit('update'); - this._fetchResource(this.STATE_KEY.Summary, groupId); - this._fetchResource(this.STATE_KEY.GroupRooms, groupId); - this._fetchResource(this.STATE_KEY.GroupMembers, groupId); - this._fetchResource(this.STATE_KEY.GroupInvitedMembers, groupId); + if (groupId) { + this._fetchResource(this.STATE_KEY.Summary, groupId); + this._fetchResource(this.STATE_KEY.GroupRooms, groupId); + this._fetchResource(this.STATE_KEY.GroupMembers, groupId); + this._fetchResource(this.STATE_KEY.GroupInvitedMembers, groupId); + } // Similar to the Store of flux/utils, we return a "token" that // can be used to unregister the listener.