Merge pull request #3364 from ClearlyClaire/glitch-soc/features/local-only-drop-emoji

Deprecate eye emoji in favor of a bespoke API parameter
This commit is contained in:
Claire
2026-01-27 22:30:17 +01:00
parent a602cc9126
commit ffddcc7c1d
7 changed files with 69 additions and 6 deletions

View File

@@ -93,6 +93,7 @@ class Api::V1::StatusesController < Api::BaseController
application: doorkeeper_token.application,
poll: status_params[:poll],
content_type: status_params[:content_type],
local_only: status_params[:local_only],
allowed_mentions: status_params[:allowed_mentions],
idempotency: request.headers['Idempotency-Key'],
with_rate_limit: true
@@ -191,6 +192,7 @@ class Api::V1::StatusesController < Api::BaseController
:language,
:scheduled_at,
:content_type,
:local_only,
allowed_mentions: [],
media_ids: [],
media_attributes: [

View File

@@ -228,10 +228,6 @@ export function submitCompose(overridePrivacy = null, successCallback = undefine
return;
}
if (getState().getIn(['compose', 'advanced_options', 'do_not_federate'])) {
status = status + ' 👁️';
}
dispatch(submitComposeRequest());
// If we're editing a post with media attachments, those have not
@@ -262,6 +258,7 @@ export function submitCompose(overridePrivacy = null, successCallback = undefine
status,
spoiler_text,
content_type: getState().getIn(['compose', 'content_type']),
local_only: getState().getIn(['compose', 'advanced_options', 'do_not_federate']),
in_reply_to_id: getState().getIn(['compose', 'in_reply_to'], null),
media_ids: media.map(item => item.get('id')),
media_attributes,

View File

@@ -630,7 +630,6 @@ export const composeReducer = (state = initialState, action) => {
case REDRAFT: {
const do_not_federate = !!action.status.get('local_only');
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', text);
map.set('content_type', action.content_type || 'text/plain');

View File

@@ -495,7 +495,13 @@ class Status < ApplicationRecord
def set_local_only
return unless account.domain.nil? && !attribute_changed?(:local_only)
self.local_only = marked_local_only?
self.local_only = true if thread&.local_only? && local_only.nil?
if reblog?
self.local_only = reblog.local_only
elsif local_only.nil?
self.local_only = marked_local_only?
end
end
def set_conversation

View File

@@ -247,6 +247,7 @@ class PostStatusService < BaseService
language: valid_locale_cascade(@options[:language], @account.user&.preferred_posting_language, I18n.default_locale),
application: @options[:application],
content_type: @options[:content_type] || @account.user&.setting_default_content_type,
local_only: @options[:local_only],
rate_limit: @options[:with_rate_limit],
quote_approval_policy: @options[:quote_approval_policy],
}.compact