Skip to content

Commit

Permalink
Merge branch 'kb_lts' into kb_development
Browse files Browse the repository at this point in the history
  • Loading branch information
kmycode committed Sep 25, 2023
2 parents 3dded28 + 2f21aa5 commit fc923c4
Show file tree
Hide file tree
Showing 5 changed files with 72 additions and 1 deletion.
8 changes: 7 additions & 1 deletion app/services/activitypub/process_account_service.rb
Original file line number Diff line number Diff line change
Expand Up @@ -265,7 +265,7 @@ def searchability_from_audience
bio = searchability_from_bio
return bio unless bio.nil?

return misskey_software? ? :public : :direct
return misskey_software? ? misskey_searchability_from_indexable : :direct
end

if audience_searchable_by.any? { |uri| ActivityPub::TagManager.instance.public_collection?(uri) }
Expand Down Expand Up @@ -297,6 +297,12 @@ def searchability_from_bio
searchability
end

def misskey_searchability_from_indexable
return :public if @json['indexable'].nil?

@json['indexable'] ? :public : :limited
end

def instance_info
@instance_info ||= InstanceInfo.find_by(domain: @domain)
end
Expand Down
1 change: 1 addition & 0 deletions app/services/post_status_service.rb
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@ def preprocess_attributes!
end

def load_circle
raise ArgumentError if @options[:visibility] == 'limited' && @options[:circle_id].nil?
return unless @options[:visibility] == 'circle' || (@options[:visibility] == 'limited' && @options[:circle_id].present?)

@circle = @options[:circle_id].present? && Circle.find(@options[:circle_id])
Expand Down
8 changes: 8 additions & 0 deletions spec/models/status_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,14 @@
end
end

context 'when limited-public' do
let(:account_searchability) { :limited }

it 'returns limited' do
expect(subject.compute_searchability).to eq 'limited'
end
end

context 'when private-limited' do
let(:account_searchability) { :private }
let(:status_searchability) { :limited }
Expand Down
35 changes: 35 additions & 0 deletions spec/services/activitypub/process_account_service_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,15 @@
let(:software) { 'mastodon' }
let(:searchable_by) { 'https://www.w3.org/ns/activitystreams#Public' }
let(:sender_bio) { '' }
let(:indexable) { nil }
let(:payload) do
{
id: 'https://foo.test',
type: 'Actor',
inbox: 'https://foo.test/inbox',
followers: 'https://example.com/followers',
searchableBy: searchable_by,
indexable: indexable,
summary: sender_bio,
}.with_indifferent_access
end
Expand Down Expand Up @@ -73,6 +75,39 @@
it 'searchability is public' do
expect(subject.searchability).to eq 'public'
end

context 'with true indexable' do
let(:indexable) { true }

it 'searchability is public' do
expect(subject.searchability).to eq 'public'
end
end

context 'with false indexable' do
let(:indexable) { false }

it 'searchability is limited' do
expect(subject.searchability).to eq 'limited'
end
end

context 'with no-indexable key' do
let(:payload) do
{
id: 'https://foo.test',
type: 'Actor',
inbox: 'https://foo.test/inbox',
followers: 'https://example.com/followers',
searchableBy: searchable_by,
summary: sender_bio,
}.with_indifferent_access
end

it 'searchability is public' do
expect(subject.searchability).to eq 'public'
end
end
end

context 'with bio' do
Expand Down
21 changes: 21 additions & 0 deletions spec/services/post_status_service_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -206,6 +206,27 @@
expect(status.mentioned_accounts.first.id).to eq circle_account.id
end

it 'circle post with limited visibility' do
account = Fabricate(:account)
circle_account = Fabricate(:account)
circle = Fabricate(:circle, account: account)
text = 'This is an English text.'

circle_account.follow!(account)
circle.accounts << circle_account
status = subject.call(account, text: text, visibility: 'limited', circle_id: circle.id)

expect(status.visibility).to eq 'limited'
expect(status.limited_scope).to eq 'circle'
end

it 'limited visibility and empty circle' do
account = Fabricate(:account)
text = 'This is an English text.'

expect { subject.call(account, text: text, visibility: 'limited') }.to raise_exception ActiveRecord::RecordInvalid
end

it 'safeguards mentions' do
account = Fabricate(:account)
mentioned_account = Fabricate(:account, username: 'alice')
Expand Down

0 comments on commit fc923c4

Please sign in to comment.