Change: #576 公開範囲「公開」を禁止する設定について、ブーストにも適用されるように (#580)

This commit is contained in:
KMY(雪あすか) 2024-02-17 12:32:48 +09:00 committed by GitHub
parent e5ab4a3eb2
commit 80be9b38a0
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 38 additions and 1 deletions

View file

@ -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])

View file

@ -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') }