0
0
Fork 0

Give the replies collection an identifier and enable pagination (#10128)

This commit is contained in:
ThibG 2019-02-28 18:16:34 +01:00 committed by Eugen Rochko
parent 9d3c6f1849
commit d8498b3983
4 changed files with 67 additions and 3 deletions

View file

@ -13,7 +13,7 @@ class ActivityPub::NoteSerializer < ActiveModel::Serializer
has_many :media_attachments, key: :attachment
has_many :virtual_tags, key: :tag
has_one :replies, serializer: ActivityPub::CollectionSerializer
has_one :replies, serializer: ActivityPub::CollectionSerializer, if: :local?
def id
ActivityPub::TagManager.instance.uri_for(object)
@ -36,12 +36,16 @@ class ActivityPub::NoteSerializer < ActiveModel::Serializer
end
def replies
replies = object.self_replies(5).pluck(:id, :uri)
last_id = replies.last&.first
ActivityPub::CollectionPresenter.new(
type: :unordered,
id: ActivityPub::TagManager.instance.replies_uri_for(object),
first: ActivityPub::CollectionPresenter.new(
type: :unordered,
page: true,
items: object.self_replies(5).pluck(:uri)
part_of: ActivityPub::TagManager.instance.replies_uri_for(object),
items: replies.map(&:second),
next: last_id ? ActivityPub::TagManager.instance.replies_uri_for(object, page: true, min_id: last_id) : nil
)
)
end