Use the server setting to get the max number of poll options in UI (#29490)
This commit is contained in:
		
							parent
							
								
									6984f94044
								
							
						
					
					
						commit
						b9722dfe2b
					
				| 
						 | 
					@ -786,11 +786,12 @@ export function addPollOption(title) {
 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export function changePollOption(index, title) {
 | 
					export function changePollOption(index, title, maxOptions) {
 | 
				
			||||||
  return {
 | 
					  return {
 | 
				
			||||||
    type: COMPOSE_POLL_OPTION_CHANGE,
 | 
					    type: COMPOSE_POLL_OPTION_CHANGE,
 | 
				
			||||||
    index,
 | 
					    index,
 | 
				
			||||||
    title,
 | 
					    title,
 | 
				
			||||||
 | 
					    maxOptions,
 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -58,10 +58,11 @@ const Option = ({ multipleChoice, index, title, autoFocus }) => {
 | 
				
			||||||
  const dispatch = useDispatch();
 | 
					  const dispatch = useDispatch();
 | 
				
			||||||
  const suggestions = useSelector(state => state.getIn(['compose', 'suggestions']));
 | 
					  const suggestions = useSelector(state => state.getIn(['compose', 'suggestions']));
 | 
				
			||||||
  const lang = useSelector(state => state.getIn(['compose', 'language']));
 | 
					  const lang = useSelector(state => state.getIn(['compose', 'language']));
 | 
				
			||||||
 | 
					  const maxOptions = useSelector(state => state.getIn(['server', 'server', 'configuration', 'polls', 'max_options']));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  const handleChange = useCallback(({ target: { value } }) => {
 | 
					  const handleChange = useCallback(({ target: { value } }) => {
 | 
				
			||||||
    dispatch(changePollOption(index, value));
 | 
					    dispatch(changePollOption(index, value, maxOptions));
 | 
				
			||||||
  }, [dispatch, index]);
 | 
					  }, [dispatch, index, maxOptions]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  const handleSuggestionsFetchRequested = useCallback(token => {
 | 
					  const handleSuggestionsFetchRequested = useCallback(token => {
 | 
				
			||||||
    dispatch(fetchComposeSuggestions(token));
 | 
					    dispatch(fetchComposeSuggestions(token));
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -280,12 +280,12 @@ const updateSuggestionTags = (state, token) => {
 | 
				
			||||||
  });
 | 
					  });
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const updatePoll = (state, index, value) => state.updateIn(['poll', 'options'], options => {
 | 
					const updatePoll = (state, index, value, maxOptions) => state.updateIn(['poll', 'options'], options => {
 | 
				
			||||||
  const tmp = options.set(index, value).filterNot(x => x.trim().length === 0);
 | 
					  const tmp = options.set(index, value).filterNot(x => x.trim().length === 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (tmp.size === 0) {
 | 
					  if (tmp.size === 0) {
 | 
				
			||||||
    return tmp.push('').push('');
 | 
					    return tmp.push('').push('');
 | 
				
			||||||
  } else if (tmp.size < 4) {
 | 
					  } else if (tmp.size < maxOptions) {
 | 
				
			||||||
    return tmp.push('');
 | 
					    return tmp.push('');
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -529,7 +529,7 @@ export default function compose(state = initialState, action) {
 | 
				
			||||||
  case COMPOSE_POLL_REMOVE:
 | 
					  case COMPOSE_POLL_REMOVE:
 | 
				
			||||||
    return state.set('poll', null);
 | 
					    return state.set('poll', null);
 | 
				
			||||||
  case COMPOSE_POLL_OPTION_CHANGE:
 | 
					  case COMPOSE_POLL_OPTION_CHANGE:
 | 
				
			||||||
    return updatePoll(state, action.index, action.title);
 | 
					    return updatePoll(state, action.index, action.title, action.maxOptions);
 | 
				
			||||||
  case COMPOSE_POLL_SETTINGS_CHANGE:
 | 
					  case COMPOSE_POLL_SETTINGS_CHANGE:
 | 
				
			||||||
    return state.update('poll', poll => poll.set('expires_in', action.expiresIn).set('multiple', action.isMultiple));
 | 
					    return state.update('poll', poll => poll.set('expires_in', action.expiresIn).set('multiple', action.isMultiple));
 | 
				
			||||||
  case COMPOSE_LANGUAGE_CHANGE:
 | 
					  case COMPOSE_LANGUAGE_CHANGE:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue