]> cat aescling's git repositories - mastodon.git/commitdiff
[Glitch] Fix Poll fetchPoll action not being debounced.
authorGurgen Hayrapetyan <info.gurgen@gmail.com>
Thu, 16 Apr 2020 18:16:20 +0000 (22:16 +0400)
committerThibaut Girka <thib@sitedethib.com>
Fri, 17 Apr 2020 18:20:06 +0000 (20:20 +0200)
Port ab8d7c0680d7f75826277be4c8eea1ebd396be8a to glitch-soc

Signed-off-by: Thibaut Girka <thib@sitedethib.com>
app/javascript/flavours/glitch/components/poll.js
app/javascript/flavours/glitch/containers/poll_container.js

index 46fd1e8c0e712f00f39f7bcc9069efc5e6c594b3..088d93990bc0e6064bc4f8d975ce075f0d9905de 100644 (file)
@@ -4,7 +4,7 @@ import ImmutablePropTypes from 'react-immutable-proptypes';
 import ImmutablePureComponent from 'react-immutable-pure-component';
 import { defineMessages, injectIntl, FormattedMessage } from 'react-intl';
 import classNames from 'classnames';
-import { vote, fetchPoll } from 'flavours/glitch/actions/polls';
+import { vote } from 'flavours/glitch/actions/polls';
 import Motion from 'flavours/glitch/util/optional_motion';
 import spring from 'react-motion/lib/spring';
 import escapeTextContentForBrowser from 'escape-html';
@@ -30,6 +30,7 @@ class Poll extends ImmutablePureComponent {
     intl: PropTypes.object.isRequired,
     dispatch: PropTypes.func,
     disabled: PropTypes.bool,
+    refresh: PropTypes.func,
   };
 
   state = {
@@ -108,7 +109,7 @@ class Poll extends ImmutablePureComponent {
       return;
     }
 
-    this.props.dispatch(fetchPoll(this.props.poll.get('id')));
+    this.props.refresh();
   };
 
   renderOption (option, optionIndex, showResults) {
index da93cc905c0ef3752ca5ce6c91d702eade81319d..b9086435474445c3235a6c437e104852a5da1325 100644 (file)
@@ -1,8 +1,21 @@
 import { connect } from 'react-redux';
+import { debounce } from 'lodash';
+
 import Poll from 'flavours/glitch/components/poll';
+import { fetchPoll } from 'flavours/glitch/actions/polls';
+
+const mapDispatchToProps = (dispatch, { pollId }) => ({
+  refresh: debounce(
+    () => {
+      dispatch(fetchPoll(pollId));
+    },
+    1000,
+    { leading: true },
+  ),
+});
 
 const mapStateToProps = (state, { pollId }) => ({
   poll: state.getIn(['polls', pollId]),
 });
 
-export default connect(mapStateToProps)(Poll);
+export default connect(mapStateToProps, mapDispatchToProps)(Poll);