From 31e99792859152fd1a5fc7ca573da0f2805da44e Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Tue, 10 Apr 2018 15:31:04 +0100 Subject: [PATCH] Add 500ms delay to show `membershipBusy` for longer to avoid a UI that flashes quickly --- src/components/structures/GroupView.js | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/src/components/structures/GroupView.js b/src/components/structures/GroupView.js index e725483d29..0a85c5e7ab 100644 --- a/src/components/structures/GroupView.js +++ b/src/components/structures/GroupView.js @@ -670,8 +670,12 @@ export default React.createClass({ }); }, - _onAcceptInviteClick: function() { + _onAcceptInviteClick: async function() { this.setState({membershipBusy: true}); + + // Wait 500ms to prevent flashing + 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 +688,12 @@ export default React.createClass({ }); }, - _onRejectInviteClick: function() { + _onRejectInviteClick: async function() { this.setState({membershipBusy: true}); + + // Wait 500ms to prevent flashing + 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 +706,12 @@ export default React.createClass({ }); }, - _onJoinClick: function() { + _onJoinClick: async function() { this.setState({membershipBusy: true}); + // Wait 500ms to prevent flashing + 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 +731,14 @@ 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 + 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) => {