import ImmutablePureComponent from 'react-immutable-pure-component';
import { defineMessages, injectIntl, FormattedMessage } from 'react-intl';
import classNames from 'classnames';
-import { vote, fetchPoll } from 'mastodon/actions/polls';
+import { vote } from 'mastodon/actions/polls';
import Motion from 'mastodon/features/ui/util/optional_motion';
import spring from 'react-motion/lib/spring';
import escapeTextContentForBrowser from 'escape-html';
intl: PropTypes.object.isRequired,
dispatch: PropTypes.func,
disabled: PropTypes.bool,
+ refresh: PropTypes.func,
};
state = {
return;
}
- this.props.dispatch(fetchPoll(this.props.poll.get('id')));
+ this.props.refresh();
};
renderOption (option, optionIndex, showResults) {
import { connect } from 'react-redux';
+import { debounce } from 'lodash';
+
import Poll from 'mastodon/components/poll';
+import { fetchPoll } from 'mastodon/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);