Fix additional local-only emoji being added when updating toot

An additional local-only emoji was added to toots after editing a local-only toot, because the `do_not_federate` option is `true` and a local-only emoji is added unconditionally in such a case.

Signed-off-by: Plastikmensch <plastikmensch@users.noreply.github.com>
pull/2430/head
Plastikmensch 2023-10-31 05:52:41 +01:00
parent 954f125918
commit f88e33d836
No known key found for this signature in database
GPG Key ID: 96381D586F4A6077
1 changed files with 9 additions and 4 deletions

View File

@ -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'));
@ -632,7 +637,7 @@ export default function compose(state = initialState, action) {
map.update(
'advanced_options',
map => map.merge(new ImmutableMap({ do_not_federate: action.status.get('local_only'), threaded_mode: false })),
map => map.merge(new ImmutableMap({ do_not_federate, threaded_mode: false })),
);
if (action.status.get('poll')) {