0
0
Fork 0

Federate pinned statuses over ActivityPub (#6610)

* Federate pinned statuses over ActivityPub

* Display pinned toots in web UI

Fix #6117

* Fix migration

* Fix tests

* Update outbox_serializer.rb

* Update remove_serializer.rb

* Update add_serializer.rb

* Update fetch_featured_collection_service.rb
This commit is contained in:
Eugen Rochko 2018-03-04 09:19:11 +01:00 committed by GitHub
parent 45feb439bd
commit 9110db41c5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
29 changed files with 383 additions and 37 deletions

View file

@ -46,6 +46,10 @@ class ActivityPub::Activity
ActivityPub::Activity::Reject
when 'Flag'
ActivityPub::Activity::Flag
when 'Add'
ActivityPub::Activity::Add
when 'Remove'
ActivityPub::Activity::Remove
end
end
end

View file

@ -0,0 +1,13 @@
# frozen_string_literal: true
class ActivityPub::Activity::Add < ActivityPub::Activity
def perform
return unless @json['target'].present? && value_or_id(@json['target']) == @account.featured_collection_url
status = status_from_uri(object_uri)
return unless status.account_id == @account.id && !@account.pinned?(status)
StatusPin.create!(account: @account, status: status)
end
end

View file

@ -0,0 +1,14 @@
# frozen_string_literal: true
class ActivityPub::Activity::Remove < ActivityPub::Activity
def perform
return unless @json['origin'].present? && value_or_id(@json['origin']) == @account.featured_collection_url
status = status_from_uri(object_uri)
return unless status.account_id == @account.id
pin = StatusPin.find_by(account: @account, status: status)
pin&.destroy!
end
end

View file

@ -18,6 +18,7 @@ class ActivityPub::Adapter < ActiveModelSerializers::Adapter::Base
'toot' => 'http://joinmastodon.org/ns#',
'Emoji' => 'toot:Emoji',
'focalPoint' => { '@container' => '@list', '@id' => 'toot:focalPoint' },
'featured' => 'toot:featured',
},
],
}.freeze