Skip to content

Commit

Permalink
#15 Add misskey fork indexable support
Browse files Browse the repository at this point in the history
  • Loading branch information
kmycode committed Sep 25, 2023
1 parent 385ac0c commit 2f21aa5
Show file tree
Hide file tree
Showing 3 changed files with 50 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
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

0 comments on commit 2f21aa5

Please sign in to comment.