Simplify GroupStore listener registration

This commit is contained in:
Luke Barnard 2017-10-27 11:36:32 +01:00
parent 1715206f62
commit e094c32c62
4 changed files with 14 additions and 12 deletions

View file

@ -447,7 +447,7 @@ export default React.createClass({
_initGroupStore: function(groupId) {
this._groupStore = GroupStoreCache.getGroupStore(MatrixClientPeg.get(), groupId);
this._groupStore.on('update', () => {
this._groupStore.registerListener(() => {
const summary = this._groupStore.getSummary();
if (summary.profile) {
// Default profile fields should be "" for later sending to the server (which
@ -464,7 +464,6 @@ export default React.createClass({
});
});
this._groupStore.on('error', (err) => {
console.error(err);
this.setState({
summary: null,
error: err,

View file

@ -50,12 +50,9 @@ export default withMatrixClient(React.createClass({
_initGroupStore: function(groupId) {
this._groupStore = GroupStoreCache.getGroupStore(this.context.matrixClient, groupId);
this._groupStore.on('update', () => {
this._groupStore.registerListener(() => {
this._fetchMembers();
});
this._groupStore.on('error', (err) => {
console.error(err);
});
},
_fetchMembers: function() {

View file

@ -47,16 +47,14 @@ export default React.createClass({
_initGroupStore: function(groupId) {
this._groupStore = GroupStoreCache.getGroupStore(this.context.matrixClient, groupId);
this._groupStore.on('update', () => {
this._groupStore.registerListener(() => {
this._fetchRooms();
});
this._groupStore.on('error', (err) => {
console.error('Error in group store (listened to by GroupRoomList)', err);
this.setState({
rooms: null,
});
});
this._fetchRooms();
},
_fetchRooms: function() {

View file

@ -29,9 +29,10 @@ export default class GroupStore extends EventEmitter {
this._matrixClient = matrixClient;
this._summary = {};
this._rooms = [];
this._fetchSummary();
this._fetchRooms();
this._fetchMembers();
this.on('error', (err) => {
console.error(`GroupStore for ${this.groupId} encountered error`, err);
});
}
_fetchMembers() {
@ -80,6 +81,13 @@ export default class GroupStore extends EventEmitter {
this.emit('update');
}
registerListener(fn) {
this.on('update', fn);
this._fetchSummary();
this._fetchRooms();
this._fetchMembers();
}
getSummary() {
return this._summary;
}