Fix poll options not rendering text after vote/refresh
Port fd128b9c7a to glitch-soc
			
			
This commit is contained in:
		
				
					committed by
					
						 Thibaut Girka
						Thibaut Girka
					
				
			
			
				
	
			
			
			
						parent
						
							94f1a751bf
						
					
				
				
					commit
					94a0149ff3
				
			| @@ -82,3 +82,9 @@ export function importFetchedStatuses(statuses) { | ||||
|     dispatch(importStatuses(normalStatuses)); | ||||
|   }; | ||||
| } | ||||
|  | ||||
| export function importFetchedPoll(poll) { | ||||
|   return dispatch => { | ||||
|     dispatch(importPolls([normalizePoll(poll)])); | ||||
|   }; | ||||
| } | ||||
|   | ||||
| @@ -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))); | ||||
| }; | ||||
|  | ||||
|   | ||||
| @@ -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 && <span className={classNames('poll__input', { checkbox: poll.get('multiple'), active })} />} | ||||
|           {showResults && <span className='poll__number'>{Math.round(percent)}%</span>} | ||||
|  | ||||
|           <span dangerouslySetInnerHTML={{ __html: option.get('title_emojified') }} /> | ||||
|           <span dangerouslySetInnerHTML={{ __html: option.get('title_emojified', emojify(escapeTextContentForBrowser(option.get('title')))) }} /> | ||||
|         </label> | ||||
|       </li> | ||||
|     ); | ||||
|   | ||||
| @@ -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; | ||||
|   } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user