about summary refs log tree commit diff
diff options
context:
space:
mode:
authorEugen Rochko <eugen@zeonfederated.com>2022-02-27 07:37:00 +0100
committerGitHub <noreply@github.com>2022-02-27 07:37:00 +0100
commit0883f057531d291e8793bd3113f4331c502ad8cf (patch)
tree490f02cf3f11ecd1ffc4ed05d8b889e46126e3b1
parent57814a98a9c8e4b106d44a31e36561f585f73bac (diff)
Fix report submit button not being disabled during submission in web UI (#17654)
Add loading indicator for status selection step in report dialog in web UI
-rw-r--r--app/javascript/mastodon/features/report/comment.js2
-rw-r--r--app/javascript/mastodon/features/report/statuses.js7
2 files changed, 6 insertions, 3 deletions
diff --git a/app/javascript/mastodon/features/report/comment.js b/app/javascript/mastodon/features/report/comment.js
index 8d1a4e21f..cde156415 100644
--- a/app/javascript/mastodon/features/report/comment.js
+++ b/app/javascript/mastodon/features/report/comment.js
@@ -74,7 +74,7 @@ class Comment extends React.PureComponent {
         <div className='flex-spacer' />
 
         <div className='report-dialog-modal__actions'>
-          <Button onClick={this.handleClick}><FormattedMessage id='report.submit' defaultMessage='Submit report' /></Button>
+          <Button onClick={this.handleClick} disabled={isSubmitting}><FormattedMessage id='report.submit' defaultMessage='Submit report' /></Button>
         </div>
       </React.Fragment>
     );
diff --git a/app/javascript/mastodon/features/report/statuses.js b/app/javascript/mastodon/features/report/statuses.js
index 5999a0e06..d5d86034f 100644
--- a/app/javascript/mastodon/features/report/statuses.js
+++ b/app/javascript/mastodon/features/report/statuses.js
@@ -6,9 +6,11 @@ import StatusCheckBox from 'mastodon/features/report/containers/status_check_box
 import { OrderedSet } from 'immutable';
 import { FormattedMessage } from 'react-intl';
 import Button from 'mastodon/components/button';
+import LoadingIndicator from 'mastodon/components/loading_indicator';
 
 const mapStateToProps = (state, { accountId }) => ({
   availableStatusIds: OrderedSet(state.getIn(['timelines', `account:${accountId}:with_replies`, 'items'])),
+  isLoading: state.getIn(['timelines', `account:${accountId}:with_replies`, 'isLoading']),
 });
 
 export default @connect(mapStateToProps)
@@ -19,6 +21,7 @@ class Statuses extends React.PureComponent {
     accountId: PropTypes.string.isRequired,
     availableStatusIds: ImmutablePropTypes.set.isRequired,
     selectedStatusIds: ImmutablePropTypes.set.isRequired,
+    isLoading: PropTypes.bool,
     onToggle: PropTypes.func.isRequired,
   };
 
@@ -28,7 +31,7 @@ class Statuses extends React.PureComponent {
   };
 
   render () {
-    const { availableStatusIds, selectedStatusIds, onToggle } = this.props;
+    const { availableStatusIds, selectedStatusIds, onToggle, isLoading } = this.props;
 
     return (
       <React.Fragment>
@@ -36,7 +39,7 @@ class Statuses extends React.PureComponent {
         <p className='report-dialog-modal__lead'><FormattedMessage id='report.statuses.subtitle' defaultMessage='Select all that apply' /></p>
 
         <div className='report-dialog-modal__statuses'>
-          {availableStatusIds.union(selectedStatusIds).map(statusId => (
+          {isLoading ? <LoadingIndicator /> : availableStatusIds.union(selectedStatusIds).map(statusId => (
             <StatusCheckBox
               id={statusId}
               key={statusId}