Change: ローカルタイムラインを無効にしている時、/api/v1/timelines/publicタイムライン取得で「リモートユーザーのみ」指定も無効化 (#526)

* Change: ローカルタイムラインを無効にしている時、「リモートユーザーのみ」指定も無効化

* Fix test
This commit is contained in:
KMY(雪あすか) 2024-02-06 10:03:41 +09:00 committed by GitHub
parent 35db342d5e
commit 57341a82ac
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 69 additions and 20 deletions

View file

@ -171,21 +171,21 @@ const Firehose = ({ feedType, multiColumn }) => {
<ColumnSettings />
</ColumnHeader>
<div className='account__section-headline'>
{enableLocalTimeline && (
{enableLocalTimeline && (
<div className='account__section-headline'>
<NavLink exact to='/public/local'>
<FormattedMessage tagName='div' id='firehose.local' defaultMessage='This server' />
</NavLink>
)}
<NavLink exact to='/public/remote'>
<FormattedMessage tagName='div' id='firehose.remote' defaultMessage='Other servers' />
</NavLink>
<NavLink exact to='/public/remote'>
<FormattedMessage tagName='div' id='firehose.remote' defaultMessage='Other servers' />
</NavLink>
<NavLink exact to='/public'>
<FormattedMessage tagName='div' id='firehose.all' defaultMessage='All' />
</NavLink>
</div>
<NavLink exact to='/public'>
<FormattedMessage tagName='div' id='firehose.all' defaultMessage='All' />
</NavLink>
</div>
)}
<StatusListContainer
prepend={prependBanner}

View file

@ -53,7 +53,7 @@ class PublicFeed
end
def remote_only?
options[:remote] && !options[:local]
options[:remote] && !options[:local] && Setting.enable_local_timeline
end
def hide_local_users?

View file

@ -88,9 +88,21 @@ RSpec.describe PublicFeed do
expect(subject).to include(local_status.id)
end
it 'excludes public_unlisted statuses' do
it 'includes public_unlisted statuses' do
expect(subject).to include(public_unlisted_status.id)
end
context 'when local timeline is disabled' do
before do
Form::AdminSettings.new(enable_local_timeline: '0').save
end
it 'includes statuses' do
expect(subject).to include(remote_status.id)
expect(subject).to include(local_status.id)
expect(subject).to include(public_unlisted_status.id)
end
end
end
context 'with a viewer' do
@ -107,6 +119,18 @@ RSpec.describe PublicFeed do
it 'excludes public_unlisted statuses' do
expect(subject).to include(public_unlisted_status.id)
end
context 'when local timeline is disabled' do
before do
Form::AdminSettings.new(enable_local_timeline: '0').save
end
it 'includes statuses' do
expect(subject).to include(remote_status.id)
expect(subject).to include(local_status.id)
expect(subject).to include(public_unlisted_status.id)
end
end
end
end
@ -159,15 +183,15 @@ RSpec.describe PublicFeed do
it 'includes public_unlisted statuses' do
expect(subject).to include(public_unlisted_status.id)
end
end
context 'when local timeline is disabled' do
before do
Form::AdminSettings.new(enable_local_timeline: '0').save
end
context 'when local timeline is disabled' do
before do
Form::AdminSettings.new(enable_local_timeline: '0').save
end
it 'does not include all statuses' do
expect(subject).to eq []
it 'does not include all statuses' do
expect(subject).to eq []
end
end
end
end
@ -192,6 +216,18 @@ RSpec.describe PublicFeed do
it 'excludes public_unlisted statuses' do
expect(subject).to_not include(public_unlisted_status.id)
end
context 'when local timeline is disabled' do
before do
Form::AdminSettings.new(enable_local_timeline: '0').save
end
it 'includes statuses with local' do
expect(subject).to include(remote_status.id)
expect(subject).to include(local_status.id)
expect(subject).to include(public_unlisted_status.id)
end
end
end
context 'with a viewer' do
@ -205,6 +241,18 @@ RSpec.describe PublicFeed do
it 'excludes public_unlisted statuses' do
expect(subject).to_not include(public_unlisted_status.id)
end
context 'when local timeline is disabled' do
before do
Form::AdminSettings.new(enable_local_timeline: '0').save
end
it 'includes statuses with local' do
expect(subject).to include(remote_status.id)
expect(subject).to include(local_status.id)
expect(subject).to include(public_unlisted_status.id)
end
end
end
end

View file

@ -67,6 +67,7 @@ describe 'Public' do
context 'when local timeline is disabled' do
let(:ltl_enabled) { false }
let(:expected_statuses) { [local_status, remote_status, media_status] }
it_behaves_like 'a successful request to the public timeline'
end