|
|
|
|
@ -3,7 +3,7 @@
|
|
|
|
|
class ActivityPub::NoteSerializer < ActivityPub::Serializer
|
|
|
|
|
include FormattingHelper
|
|
|
|
|
|
|
|
|
|
context_extensions :atom_uri, :conversation, :sensitive, :voters_count, :quotes
|
|
|
|
|
context_extensions :atom_uri, :conversation, :sensitive, :voters_count, :quotes, :interaction_policies
|
|
|
|
|
|
|
|
|
|
attributes :id, :type, :summary,
|
|
|
|
|
:in_reply_to, :published, :url,
|
|
|
|
|
@ -35,6 +35,8 @@ class ActivityPub::NoteSerializer < ActivityPub::Serializer
|
|
|
|
|
attribute :quote, key: :quote_uri, if: :quote?
|
|
|
|
|
attribute :quote_authorization, if: :quote_authorization?
|
|
|
|
|
|
|
|
|
|
attribute :interaction_policy, if: -> { Mastodon::Feature.outgoing_quotes_enabled? }
|
|
|
|
|
|
|
|
|
|
def id
|
|
|
|
|
ActivityPub::TagManager.instance.uri_for(object)
|
|
|
|
|
end
|
|
|
|
|
@ -216,6 +218,23 @@ class ActivityPub::NoteSerializer < ActivityPub::Serializer
|
|
|
|
|
ActivityPub::TagManager.instance.approval_uri_for(object.quote)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def interaction_policy
|
|
|
|
|
approved_uris = []
|
|
|
|
|
|
|
|
|
|
# On outgoing posts, only automatic approval is supported
|
|
|
|
|
policy = object.quote_approval_policy >> 16
|
|
|
|
|
approved_uris << ActivityPub::TagManager::COLLECTIONS[:public] if policy.anybits?(Status::QUOTE_APPROVAL_POLICY_FLAGS[:public])
|
|
|
|
|
approved_uris << ActivityPub::TagManager.instance.followers_uri_for(object.account) if policy.anybits?(Status::QUOTE_APPROVAL_POLICY_FLAGS[:followers])
|
|
|
|
|
approved_uris << ActivityPub::TagManager.instance.following_uri_for(object.account) if policy.anybits?(Status::QUOTE_APPROVAL_POLICY_FLAGS[:followed])
|
|
|
|
|
approved_uris << ActivityPub::TagManager.instance.uri_for(object.account) if approved_uris.empty?
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
canQuote: {
|
|
|
|
|
automaticApproval: approved_uris,
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
class MediaAttachmentSerializer < ActivityPub::Serializer
|
|
|
|
|
context_extensions :blurhash, :focal_point
|
|
|
|
|
|
|
|
|
|
|