2
0

Fix Private Messages self-quoting private posts being changed to followers-only (#36249)

This commit is contained in:
Claire
2025-09-24 12:58:52 +02:00
committed by GitHub
parent 3a81ee8f5b
commit 28be5a199f
2 changed files with 9 additions and 1 deletions

View File

@@ -69,7 +69,7 @@ class PostStatusService < BaseService
@text = @options.delete(:spoiler_text) if @text.blank? && @options[:spoiler_text].present? && @quoted_status.blank?
@visibility = @options[:visibility] || @account.user&.setting_default_privacy
@visibility = :unlisted if @visibility&.to_sym == :public && @account.silenced?
@visibility = :private if @quoted_status&.private_visibility?
@visibility = :private if @quoted_status&.private_visibility? && %i(public unlisted).include?(@visibility&.to_sym)
@scheduled_at = @options[:scheduled_at]&.to_datetime
@scheduled_at = nil if scheduled_in_the_past?
rescue ArgumentError

View File

@@ -321,6 +321,14 @@ RSpec.describe PostStatusService do
expect(status).to be_private_visibility
end
it 'correctly preserves visibility for private mentions self-quoting private posts' do
account = Fabricate(:account)
quoted_status = Fabricate(:status, account: account, visibility: :private)
status = subject.call(account, text: 'test', quoted_status: quoted_status, visibility: 'direct')
expect(status).to be_direct_visibility
end
it 'returns existing status when used twice with idempotency key' do
account = Fabricate(:account)
status1 = subject.call(account, text: 'test', idempotency: 'meepmeep')