]> cat aescling's git repositories - mastodon.git/commitdiff
Fix local-only flag not necessarily being preserved on delete & redraft
authorThibaut Girka <thib@sitedethib.com>
Tue, 11 Aug 2020 21:25:17 +0000 (23:25 +0200)
committerThibG <thib@sitedethib.com>
Tue, 11 Aug 2020 22:02:44 +0000 (00:02 +0200)
app/javascript/flavours/glitch/reducers/compose.js

index a2cac88ac9618a8b7ed9f790db7e381838f3ccaf..daf857541d5824a81437304c0fd6933636948825 100644 (file)
@@ -501,8 +501,11 @@ 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', false);
+    let text = action.raw_text || unescapeHTML(expandMentions(action.status));
+    if (do_not_federate) text = text.replace(/ ?👁\ufe0f?\u200b?$/, '');
     return state.withMutations(map => {
-      map.set('text', action.raw_text || unescapeHTML(expandMentions(action.status)));
+      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'));
@@ -511,6 +514,10 @@ export default function compose(state = initialState, action) {
       map.set('caretPosition', null);
       map.set('idempotencyKey', uuid());
       map.set('sensitive', action.status.get('sensitive'));
+      map.update(
+        'advanced_options',
+        map => map.merge(new ImmutableMap({ do_not_federate }))
+      );
 
       if (action.status.get('spoiler_text').length > 0) {
         map.set('spoiler', true);