Merge branch 'master' into glitch-soc/merge-upstream
This commit is contained in:
@ -3,8 +3,8 @@
|
||||
class ActivityPub::ActivitySerializer < ActiveModel::Serializer
|
||||
attributes :id, :type, :actor, :published, :to, :cc
|
||||
|
||||
has_one :proper, key: :object, serializer: ActivityPub::NoteSerializer, unless: :owned_announce?
|
||||
attribute :proper_uri, key: :object, if: :owned_announce?
|
||||
has_one :proper, key: :object, serializer: ActivityPub::NoteSerializer, if: :serialize_object?
|
||||
attribute :proper_uri, key: :object, unless: :serialize_object?
|
||||
attribute :atom_uri, if: :announce?
|
||||
|
||||
def id
|
||||
@ -43,7 +43,9 @@ class ActivityPub::ActivitySerializer < ActiveModel::Serializer
|
||||
object.reblog?
|
||||
end
|
||||
|
||||
def owned_announce?
|
||||
announce? && object.account == object.proper.account && object.proper.private_visibility?
|
||||
def serialize_object?
|
||||
return true unless announce?
|
||||
# Serialize private self-boosts of local toots
|
||||
object.account == object.proper.account && object.proper.private_visibility? && object.local?
|
||||
end
|
||||
end
|
||||
|
@ -7,7 +7,8 @@ class ActivityPub::CollectionSerializer < ActiveModel::Serializer
|
||||
super
|
||||
end
|
||||
|
||||
attributes :id, :type
|
||||
attribute :id, if: -> { object.id.present? }
|
||||
attribute :type
|
||||
attribute :total_items, if: -> { object.size.present? }
|
||||
attribute :next, if: -> { object.next.present? }
|
||||
attribute :prev, if: -> { object.prev.present? }
|
||||
@ -37,6 +38,6 @@ class ActivityPub::CollectionSerializer < ActiveModel::Serializer
|
||||
end
|
||||
|
||||
def page?
|
||||
object.part_of.present?
|
||||
object.part_of.present? || object.page.present?
|
||||
end
|
||||
end
|
||||
|
@ -13,6 +13,8 @@ class ActivityPub::NoteSerializer < ActiveModel::Serializer
|
||||
has_many :media_attachments, key: :attachment
|
||||
has_many :virtual_tags, key: :tag
|
||||
|
||||
has_one :replies, serializer: ActivityPub::CollectionSerializer, if: :local?
|
||||
|
||||
def id
|
||||
ActivityPub::TagManager.instance.uri_for(object)
|
||||
end
|
||||
@ -33,6 +35,21 @@ class ActivityPub::NoteSerializer < ActiveModel::Serializer
|
||||
{ object.language => Formatter.instance.format(object) }
|
||||
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,
|
||||
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
|
||||
|
||||
def language?
|
||||
object.language.present?
|
||||
end
|
||||
|
Reference in New Issue
Block a user