2
0

Export interaction policies for local posts over ActivityPub (#35697)

This commit is contained in:
Claire
2025-08-06 13:31:36 +02:00
committed by GitHub
parent 6f6e7d8d49
commit c8f263c419
2 changed files with 35 additions and 1 deletions

View File

@@ -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