diff --git a/app/javascript/mastodon/actions/importer/index.js b/app/javascript/mastodon/actions/importer/index.js
index e990dc04cb..f4372fb31d 100644
--- a/app/javascript/mastodon/actions/importer/index.js
+++ b/app/javascript/mastodon/actions/importer/index.js
@@ -82,3 +82,9 @@ export function importFetchedStatuses(statuses) {
dispatch(importStatuses(normalStatuses));
};
}
+
+export function importFetchedPoll(poll) {
+ return dispatch => {
+ dispatch(importPolls([normalizePoll(poll)]));
+ };
+}
diff --git a/app/javascript/mastodon/actions/polls.js b/app/javascript/mastodon/actions/polls.js
index bee4c48a69..8e8b82df5d 100644
--- a/app/javascript/mastodon/actions/polls.js
+++ b/app/javascript/mastodon/actions/polls.js
@@ -1,4 +1,5 @@
import api from '../api';
+import { importFetchedPoll } from './importer';
export const POLL_VOTE_REQUEST = 'POLL_VOTE_REQUEST';
export const POLL_VOTE_SUCCESS = 'POLL_VOTE_SUCCESS';
@@ -12,7 +13,10 @@ export const vote = (pollId, choices) => (dispatch, getState) => {
dispatch(voteRequest());
api(getState).post(`/api/v1/polls/${pollId}/votes`, { choices })
- .then(({ data }) => dispatch(voteSuccess(data)))
+ .then(({ data }) => {
+ dispatch(importFetchedPoll(data));
+ dispatch(voteSuccess(data));
+ })
.catch(err => dispatch(voteFail(err)));
};
@@ -20,7 +24,10 @@ export const fetchPoll = pollId => (dispatch, getState) => {
dispatch(fetchPollRequest());
api(getState).get(`/api/v1/polls/${pollId}`)
- .then(({ data }) => dispatch(fetchPollSuccess(data)))
+ .then(({ data }) => {
+ dispatch(importFetchedPoll(data));
+ dispatch(fetchPollSuccess(data));
+ })
.catch(err => dispatch(fetchPollFail(err)));
};
diff --git a/app/javascript/mastodon/components/poll.js b/app/javascript/mastodon/components/poll.js
index c52445c86f..bfff7b6011 100644
--- a/app/javascript/mastodon/components/poll.js
+++ b/app/javascript/mastodon/components/poll.js
@@ -7,6 +7,8 @@ import classNames from 'classnames';
import { vote, fetchPoll } 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';
+import emojify from 'mastodon/features/emoji/emoji';
const messages = defineMessages({
moments: { id: 'time_remaining.moments', defaultMessage: 'Moments remaining' },
@@ -120,7 +122,7 @@ class Poll extends ImmutablePureComponent {
{!showResults && }
{showResults && {Math.round(percent)}%}
-
+
);
diff --git a/app/javascript/mastodon/reducers/polls.js b/app/javascript/mastodon/reducers/polls.js
index 53d9b1d8cb..9956cf83f6 100644
--- a/app/javascript/mastodon/reducers/polls.js
+++ b/app/javascript/mastodon/reducers/polls.js
@@ -1,4 +1,3 @@
-import { POLL_VOTE_SUCCESS, POLL_FETCH_SUCCESS } from 'mastodon/actions/polls';
import { POLLS_IMPORT } from 'mastodon/actions/importer';
import { Map as ImmutableMap, fromJS } from 'immutable';
@@ -10,9 +9,6 @@ export default function polls(state = initialState, action) {
switch(action.type) {
case POLLS_IMPORT:
return importPolls(state, action.polls);
- case POLL_VOTE_SUCCESS:
- case POLL_FETCH_SUCCESS:
- return importPolls(state, [action.poll]);
default:
return state;
}