diff --git a/src/components/structures/GroupView.js b/src/components/structures/GroupView.js index 9352760914..4b8ac70336 100644 --- a/src/components/structures/GroupView.js +++ b/src/components/structures/GroupView.js @@ -679,7 +679,7 @@ export default React.createClass({ _onRejectInviteClick: function() { this.setState({membershipBusy: true}); - this._matrixClient.leaveGroup(this.props.groupId).then(() => { + this._groupStore.leaveGroup().then(() => { // don't reset membershipBusy here: wait for the membership change to come down the sync }).catch((e) => { this.setState({membershipBusy: false}); @@ -693,7 +693,8 @@ export default React.createClass({ _onJoinClick: function() { this.setState({membershipBusy: true}); - this._matrixClient.joinGroup(this.props.groupId).then(() => { + + this._groupStore.joinGroup().then(() => { // don't reset membershipBusy here: wait for the membership change to come down the sync }).catch((e) => { this.setState({membershipBusy: false}); @@ -716,7 +717,7 @@ export default React.createClass({ if (!confirmed) return; this.setState({membershipBusy: true}); - this._matrixClient.leaveGroup(this.props.groupId).then(() => { + this._groupStore.leaveGroup().then(() => { // don't reset membershipBusy here: wait for the membership change to come down the sync }).catch((e) => { this.setState({membershipBusy: false}); diff --git a/src/stores/GroupStore.js b/src/stores/GroupStore.js index 2ea69b61aa..d4f0b09ff9 100644 --- a/src/stores/GroupStore.js +++ b/src/stores/GroupStore.js @@ -252,6 +252,8 @@ export default class GroupStore extends EventEmitter { acceptGroupInvite() { return MatrixClientPeg.get().acceptGroupInvite(this.groupId) + // The user should now be able to access (personal) group settings + .then(this._fetchResource.bind(this, GroupStore.STATE_KEY.Summary)) // The user might be able to see more rooms now .then(this._fetchResource.bind(this, GroupStore.STATE_KEY.GroupRooms)) // The user should now appear as a member @@ -260,6 +262,28 @@ export default class GroupStore extends EventEmitter { .then(this._fetchResource.bind(this, GroupStore.STATE_KEY.GroupInvitedMembers)); } + joinGroup() { + return MatrixClientPeg.get().joinGroup(this.groupId) + // The user should now be able to access (personal) group settings + .then(this._fetchResource.bind(this, GroupStore.STATE_KEY.Summary)) + // The user might be able to see more rooms now + .then(this._fetchResource.bind(this, GroupStore.STATE_KEY.GroupRooms)) + // The user should now appear as a member + .then(this._fetchResource.bind(this, GroupStore.STATE_KEY.GroupMembers)) + // The user should now not appear as an invited member + .then(this._fetchResource.bind(this, GroupStore.STATE_KEY.GroupInvitedMembers)); + } + + leaveGroup() { + return MatrixClientPeg.get().leaveGroup(this.groupId) + // The user should now not be able to access group settings + .then(this._fetchResource.bind(this, GroupStore.STATE_KEY.Summary)) + // The user might only be able to see a subset of rooms now + .then(this._fetchResource.bind(this, GroupStore.STATE_KEY.GroupRooms)) + // The user should now not appear as a member + .then(this._fetchResource.bind(this, GroupStore.STATE_KEY.GroupMembers)); + } + addRoomToGroupSummary(roomId, categoryId) { return MatrixClientPeg.get() .addRoomToGroupSummary(this.groupId, roomId, categoryId)