From 80be9b38a0632f9fafa048c4436cf46776b8d860 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?KMY=EF=BC=88=E9=9B=AA=E3=81=82=E3=81=99=E3=81=8B=EF=BC=89?= Date: Sat, 17 Feb 2024 12:32:48 +0900 Subject: [PATCH] =?UTF-8?q?Change:=20#576=20=E5=85=AC=E9=96=8B=E7=AF=84?= =?UTF-8?q?=E5=9B=B2=E3=80=8C=E5=85=AC=E9=96=8B=E3=80=8D=E3=82=92=E7=A6=81?= =?UTF-8?q?=E6=AD=A2=E3=81=99=E3=82=8B=E8=A8=AD=E5=AE=9A=E3=81=AB=E3=81=A4?= =?UTF-8?q?=E3=81=84=E3=81=A6=E3=80=81=E3=83=96=E3=83=BC=E3=82=B9=E3=83=88?= =?UTF-8?q?=E3=81=AB=E3=82=82=E9=81=A9=E7=94=A8=E3=81=95=E3=82=8C=E3=82=8B?= =?UTF-8?q?=E3=82=88=E3=81=86=E3=81=AB=20(#580)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/reblog_service.rb | 5 +++- spec/services/reblog_service_spec.rb | 34 ++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/app/services/reblog_service.rb b/app/services/reblog_service.rb index 76aaf83c04..7e52f82a83 100644 --- a/app/services/reblog_service.rb +++ b/app/services/reblog_service.rb @@ -25,7 +25,10 @@ class ReblogService < BaseService else options[:visibility] || (account.user&.setting_default_reblog_privacy == 'unset' ? account.user&.setting_default_privacy : account.user&.setting_default_reblog_privacy) - end + end.to_s + + visibility = 'public_unlisted' if !Setting.enable_public_visibility && visibility == 'public' + visibility = 'unlisted' if !Setting.enable_public_unlisted_visibility && visibility == 'public_unlisted' reblog = account.statuses.create!(reblog: reblogged_status, text: '', visibility: visibility, rate_limit: options[:with_rate_limit]) diff --git a/spec/services/reblog_service_spec.rb b/spec/services/reblog_service_spec.rb index e5d0a2d6ce..e17a3c5999 100644 --- a/spec/services/reblog_service_spec.rb +++ b/spec/services/reblog_service_spec.rb @@ -16,6 +16,10 @@ RSpec.describe ReblogService, type: :service do subject.call(alice, status, visibility: reblog_visibility) end + it 'a simple case reblogs publicly' do + expect(status.reblogs.first.visibility).to eq 'public' + end + describe 'boosting privately' do let(:reblog_visibility) { :private } @@ -34,6 +38,36 @@ RSpec.describe ReblogService, type: :service do end end + context 'when public visibility is disabled' do + subject { described_class.new } + + let(:status) { Fabricate(:status, account: alice, visibility: :public) } + + before do + Setting.enable_public_visibility = false + subject.call(alice, status, visibility: :public) + end + + it 'reblogs as public unlisted' do + expect(status.reblogs.first.visibility).to eq 'public_unlisted' + end + end + + context 'when public unlisted visibility is disabled' do + subject { described_class.new } + + let(:status) { Fabricate(:status, account: alice, visibility: :public) } + + before do + Setting.enable_public_unlisted_visibility = false + subject.call(alice, status, visibility: :public_unlisted) + end + + it 'reblogs as public unlisted' do + expect(status.reblogs.first.visibility).to eq 'unlisted' + end + end + context 'when the reblogged status is discarded in the meantime' do let(:status) { Fabricate(:status, account: alice, visibility: :public, text: 'discard-status-text') }