Inline instrument quote post in outgoing QuoteRequest activities (#35713)

This commit is contained in:
Claire 2025-08-07 15:19:18 +02:00 committed by GitHub
parent 836a2bfee0
commit 496a5f423e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 17 additions and 5 deletions

View File

@ -1,11 +1,22 @@
# frozen_string_literal: true
class ActivityPub::QuoteRequestSerializer < ActivityPub::Serializer
def self.serializer_for(model, options)
case model.class.name
when 'Status'
ActivityPub::NoteSerializer
else
super
end
end
context_extensions :quote_requests
attributes :id, :type, :actor, :instrument
attributes :id, :type, :actor
attribute :virtual_object, key: :object
has_one :instrument
def id
object.activity_uri
end
@ -23,7 +34,6 @@ class ActivityPub::QuoteRequestSerializer < ActivityPub::Serializer
end
def instrument
# TODO: inline object?
ActivityPub::TagManager.instance.uri_for(object.status)
instance_options[:allow_post_inlining] && object.status.local? ? object.status : ActivityPub::TagManager.instance.uri_for(object.status)
end
end

View File

@ -17,6 +17,6 @@ class ActivityPub::QuoteRequestWorker < ActivityPub::RawDistributionWorker
end
def payload
@payload ||= Oj.dump(serialize_payload(@quote, ActivityPub::QuoteRequestSerializer, signer: @account))
@payload ||= Oj.dump(serialize_payload(@quote, ActivityPub::QuoteRequestSerializer, signer: @account, allow_post_inlining: true))
end
end

View File

@ -23,7 +23,9 @@ RSpec.describe ActivityPub::QuoteRequestWorker do
type: 'QuoteRequest',
actor: ActivityPub::TagManager.instance.uri_for(quote.account),
object: ActivityPub::TagManager.instance.uri_for(quoted_status),
instrument: anything # TODO: inline post in request?
instrument: a_hash_including(
id: ActivityPub::TagManager.instance.uri_for(status)
)
)
end
end