Inline instrument quote post in outgoing QuoteRequest activities (#35713)
This commit is contained in:
@@ -1,11 +1,22 @@
|
|||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
class ActivityPub::QuoteRequestSerializer < ActivityPub::Serializer
|
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
|
context_extensions :quote_requests
|
||||||
|
|
||||||
attributes :id, :type, :actor, :instrument
|
attributes :id, :type, :actor
|
||||||
attribute :virtual_object, key: :object
|
attribute :virtual_object, key: :object
|
||||||
|
|
||||||
|
has_one :instrument
|
||||||
|
|
||||||
def id
|
def id
|
||||||
object.activity_uri
|
object.activity_uri
|
||||||
end
|
end
|
||||||
@@ -23,7 +34,6 @@ class ActivityPub::QuoteRequestSerializer < ActivityPub::Serializer
|
|||||||
end
|
end
|
||||||
|
|
||||||
def instrument
|
def instrument
|
||||||
# TODO: inline object?
|
instance_options[:allow_post_inlining] && object.status.local? ? object.status : ActivityPub::TagManager.instance.uri_for(object.status)
|
||||||
ActivityPub::TagManager.instance.uri_for(object.status)
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -17,6 +17,6 @@ class ActivityPub::QuoteRequestWorker < ActivityPub::RawDistributionWorker
|
|||||||
end
|
end
|
||||||
|
|
||||||
def payload
|
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
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -23,7 +23,9 @@ RSpec.describe ActivityPub::QuoteRequestWorker do
|
|||||||
type: 'QuoteRequest',
|
type: 'QuoteRequest',
|
||||||
actor: ActivityPub::TagManager.instance.uri_for(quote.account),
|
actor: ActivityPub::TagManager.instance.uri_for(quote.account),
|
||||||
object: ActivityPub::TagManager.instance.uri_for(quoted_status),
|
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
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user