[Glitch] Fix Poll fetchPoll action not being debounced.

Port ab8d7c0680 to glitch-soc

Signed-off-by: Thibaut Girka <thib@sitedethib.com>
rebase/4.0.0rc2
Gurgen Hayrapetyan 2020-04-16 22:16:20 +04:00 committed by Thibaut Girka
parent 81e49ba5c6
commit 4849752a9c
2 changed files with 17 additions and 3 deletions

View File

@ -4,7 +4,7 @@ import ImmutablePropTypes from 'react-immutable-proptypes';
import ImmutablePureComponent from 'react-immutable-pure-component'; import ImmutablePureComponent from 'react-immutable-pure-component';
import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; import { defineMessages, injectIntl, FormattedMessage } from 'react-intl';
import classNames from 'classnames'; 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 Motion from 'flavours/glitch/util/optional_motion';
import spring from 'react-motion/lib/spring'; import spring from 'react-motion/lib/spring';
import escapeTextContentForBrowser from 'escape-html'; import escapeTextContentForBrowser from 'escape-html';
@ -30,6 +30,7 @@ class Poll extends ImmutablePureComponent {
intl: PropTypes.object.isRequired, intl: PropTypes.object.isRequired,
dispatch: PropTypes.func, dispatch: PropTypes.func,
disabled: PropTypes.bool, disabled: PropTypes.bool,
refresh: PropTypes.func,
}; };
state = { state = {
@ -108,7 +109,7 @@ class Poll extends ImmutablePureComponent {
return; return;
} }
this.props.dispatch(fetchPoll(this.props.poll.get('id'))); this.props.refresh();
}; };
renderOption (option, optionIndex, showResults) { renderOption (option, optionIndex, showResults) {

View File

@ -1,8 +1,21 @@
import { connect } from 'react-redux'; import { connect } from 'react-redux';
import { debounce } from 'lodash';
import Poll from 'flavours/glitch/components/poll'; 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 }) => ({ const mapStateToProps = (state, { pollId }) => ({
poll: state.getIn(['polls', pollId]), poll: state.getIn(['polls', pollId]),
}); });
export default connect(mapStateToProps)(Poll); export default connect(mapStateToProps, mapDispatchToProps)(Poll);