Use the server setting to get the max number of poll options in UI (#29490)
This commit is contained in:
parent
6984f94044
commit
b9722dfe2b
3 changed files with 8 additions and 6 deletions
|
@ -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 a new issue