diff --git a/app/javascript/flavours/glitch/actions/compose.js b/app/javascript/flavours/glitch/actions/compose.js index cd3c7f4f9c..bb64745ea5 100644 --- a/app/javascript/flavours/glitch/actions/compose.js +++ b/app/javascript/flavours/glitch/actions/compose.js @@ -102,13 +102,18 @@ export const ensureComposeIsVisible = (getState) => { }; export function setComposeToStatus(status, text, spoiler_text, content_type) { - return{ - type: COMPOSE_SET_STATUS, - status, - text, - spoiler_text, - content_type, - }; + return (dispatch, getState) => { + const maxOptions = getState().server.getIn(['server', 'configuration', 'polls', 'max_options']); + + dispatch({ + type: COMPOSE_SET_STATUS, + status, + text, + spoiler_text, + content_type, + maxOptions, + }); + } } export function changeCompose(text) { diff --git a/app/javascript/flavours/glitch/actions/statuses.js b/app/javascript/flavours/glitch/actions/statuses.js index fe4a12ed74..e0fae65e6d 100644 --- a/app/javascript/flavours/glitch/actions/statuses.js +++ b/app/javascript/flavours/glitch/actions/statuses.js @@ -89,11 +89,16 @@ export function fetchStatusFail(id, error, skipLoading) { } export function redraft(status, raw_text, content_type) { - return { - type: REDRAFT, - status, - raw_text, - content_type, + return (dispatch, getState) => { + const maxOptions = getState().server.getIn(['server', 'configuration', 'polls', 'max_options']); + + dispatch({ + type: REDRAFT, + status, + raw_text, + content_type, + maxOptions, + }); }; } diff --git a/app/javascript/flavours/glitch/reducers/compose.js b/app/javascript/flavours/glitch/reducers/compose.js index daa2444b47..570a9613f1 100644 --- a/app/javascript/flavours/glitch/reducers/compose.js +++ b/app/javascript/flavours/glitch/reducers/compose.js @@ -644,8 +644,13 @@ export const composeReducer = (state = initialState, action) => { } if (action.status.get('poll')) { + let options = ImmutableList(action.status.get('poll').options.map(x => x.title)); + if (options.size < action.maxOptions) { + options = options.push(''); + } + map.set('poll', ImmutableMap({ - options: ImmutableList(action.status.get('poll').options.map(x => x.title)), + options: options, multiple: action.status.get('poll').multiple, expires_in: expiresInFromExpiresAt(action.status.get('poll').expires_at), })); @@ -678,8 +683,13 @@ export const composeReducer = (state = initialState, action) => { } if (action.status.get('poll')) { + let options = ImmutableList(action.status.get('poll').options.map(x => x.title)); + if (options.size < action.maxOptions) { + options = options.push(''); + } + map.set('poll', ImmutableMap({ - options: ImmutableList(action.status.get('poll').options.map(x => x.title)), + options: options, multiple: action.status.get('poll').multiple, expires_in: expiresInFromExpiresAt(action.status.get('poll').expires_at), }));