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
29 changed files with 383 additions and 37 deletions

View File

@ -4,7 +4,7 @@ class ActivityPub::ActorSerializer < ActiveModel::Serializer
include RoutingHelper
attributes :id, :type, :following, :followers,
:inbox, :outbox,
:inbox, :outbox, :featured,
:preferred_username, :name, :summary,
:url, :manually_approves_followers
@ -53,6 +53,10 @@ class ActivityPub::ActorSerializer < ActiveModel::Serializer
account_outbox_url(object)
end
def featured
account_collection_url(object, :featured)
end
def endpoints
object
end

View File

@ -0,0 +1,24 @@
# frozen_string_literal: true
class ActivityPub::AddSerializer < ActiveModel::Serializer
include RoutingHelper
attributes :type, :actor, :target
attribute :proper_object, key: :object
def type
'Add'
end
def actor
ActivityPub::TagManager.instance.uri_for(object.account)
end
def proper_object
ActivityPub::TagManager.instance.uri_for(object)
end
def target
account_collection_url(object, :featured)
end
end

View File

@ -2,7 +2,7 @@
class ActivityPub::CollectionSerializer < ActiveModel::Serializer
def self.serializer_for(model, options)
return ActivityPub::ActivitySerializer if model.class.name == 'Status'
return ActivityPub::NoteSerializer if model.class.name == 'Status'
return ActivityPub::CollectionSerializer if model.class.name == 'ActivityPub::CollectionPresenter'
super
end

View File

@ -0,0 +1,8 @@
# frozen_string_literal: true
class ActivityPub::OutboxSerializer < ActivityPub::CollectionSerializer
def self.serializer_for(model, options)
return ActivityPub::ActivitySerializer if model.is_a?(Status)
super
end
end

View File

@ -0,0 +1,24 @@
# frozen_string_literal: true
class ActivityPub::RemoveSerializer < ActiveModel::Serializer
include RoutingHelper
attributes :type, :actor, :origin
attribute :proper_object, key: :object
def type
'Remove'
end
def actor
ActivityPub::TagManager.instance.uri_for(object.account)
end
def proper_object
ActivityPub::TagManager.instance.uri_for(object)
end
def origin
account_collection_url(object, :featured)
end
end