diff --git a/src/components/structures/GroupView.js b/src/components/structures/GroupView.js index e725483d29..62fdb1070a 100644 --- a/src/components/structures/GroupView.js +++ b/src/components/structures/GroupView.js @@ -670,8 +670,13 @@ export default React.createClass({ }); }, - _onAcceptInviteClick: function() { + _onAcceptInviteClick: async function() { this.setState({membershipBusy: true}); + + // Wait 500ms to prevent flashing. Do this before sending a request otherwise we risk the + // spinner disappearing after we have fetched new group data. + await Promise.delay(500); + this._groupStore.acceptGroupInvite().then(() => { // don't reset membershipBusy here: wait for the membership change to come down the sync }).catch((e) => { @@ -684,8 +689,13 @@ export default React.createClass({ }); }, - _onRejectInviteClick: function() { + _onRejectInviteClick: async function() { this.setState({membershipBusy: true}); + + // Wait 500ms to prevent flashing. Do this before sending a request otherwise we risk the + // spinner disappearing after we have fetched new group data. + await Promise.delay(500); + this._groupStore.leaveGroup().then(() => { // don't reset membershipBusy here: wait for the membership change to come down the sync }).catch((e) => { @@ -698,9 +708,13 @@ export default React.createClass({ }); }, - _onJoinClick: function() { + _onJoinClick: async function() { this.setState({membershipBusy: true}); + // Wait 500ms to prevent flashing. Do this before sending a request otherwise we risk the + // spinner disappearing after we have fetched new group data. + await Promise.delay(500); + this._groupStore.joinGroup().then(() => { // don't reset membershipBusy here: wait for the membership change to come down the sync }).catch((e) => { @@ -720,10 +734,15 @@ export default React.createClass({ description: _t("Leave %(groupName)s?", {groupName: this.props.groupId}), button: _t("Leave"), danger: true, - onFinished: (confirmed) => { + onFinished: async (confirmed) => { if (!confirmed) return; this.setState({membershipBusy: true}); + + // Wait 500ms to prevent flashing. Do this before sending a request otherwise we risk the + // spinner disappearing after we have fetched new group data. + await Promise.delay(500); + this._groupStore.leaveGroup().then(() => { // don't reset membershipBusy here: wait for the membership change to come down the sync }).catch((e) => {