diff --git a/app/javascript/flavours/glitch/reducers/compose.js b/app/javascript/flavours/glitch/reducers/compose.js index 0915ecba0f21bb..b50d3ce0412234 100644 --- a/app/javascript/flavours/glitch/reducers/compose.js +++ b/app/javascript/flavours/glitch/reducers/compose.js @@ -364,6 +364,8 @@ const updateSuggestionTags = (state, token) => { }; export default function compose(state = initialState, action) { + let do_not_federate, text; + switch(action.type) { case STORE_HYDRATE: return hydrate(state, action.state.get('compose')); @@ -568,8 +570,8 @@ export default function compose(state = initialState, action) { case COMPOSE_DOODLE_SET: return state.mergeIn(['doodle'], action.options); case REDRAFT: - const do_not_federate = !!action.status.get('local_only'); - let text = action.raw_text || unescapeHTML(expandMentions(action.status)); + do_not_federate = !!action.status.get('local_only'); + text = action.raw_text || unescapeHTML(expandMentions(action.status)); if (do_not_federate) text = text.replace(/ ?👁\ufe0f?\u200b?$/, ''); return state.withMutations(map => { map.set('text', text); @@ -609,9 +611,12 @@ export default function compose(state = initialState, action) { } }); case COMPOSE_SET_STATUS: + do_not_federate = !!action.status.get('local_only'); + text = action.text || unescapeHTML(expandMentions(action.status)); + if (do_not_federate) text = text.replace(/ ?👁\ufe0f?\u200b?$/, ''); return state.withMutations(map => { map.set('id', action.status.get('id')); - map.set('text', action.text); + map.set('text', text); map.set('content_type', action.content_type || 'text/plain'); map.set('in_reply_to', action.status.get('in_reply_to_id')); map.set('privacy', action.status.get('visibility')); @@ -630,6 +635,11 @@ export default function compose(state = initialState, action) { map.set('spoiler_text', ''); } + map.update( + 'advanced_options', + map => map.merge(new ImmutableMap({ do_not_federate, threaded_mode: false })), + ); + if (action.status.get('poll')) { map.set('poll', ImmutableMap({ options: action.status.getIn(['poll', 'options']).map(x => x.get('title')),