From c9eefd0ae7a141feaac380b65a0031ccddcf1f8b Mon Sep 17 00:00:00 2001 From: David Roetzel Date: Wed, 25 Mar 2026 15:32:15 +0100 Subject: [PATCH] Persist activity URI of a `FeatureRequest` (#38393) --- app/lib/activitypub/activity/feature_request.rb | 10 ++++++---- spec/lib/activitypub/activity/feature_request_spec.rb | 2 ++ 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/app/lib/activitypub/activity/feature_request.rb b/app/lib/activitypub/activity/feature_request.rb index 180eeb492c..314a430b6b 100644 --- a/app/lib/activitypub/activity/feature_request.rb +++ b/app/lib/activitypub/activity/feature_request.rb @@ -23,8 +23,7 @@ class ActivityPub::Activity::FeatureRequest < ActivityPub::Activity def accept_request! collection_item = @collection.collection_items.create!( - account: @featured_account, - state: :accepted + collection_item_attributes(:accepted) ) queue_delivery!(collection_item, ActivityPub::AcceptFeatureRequestSerializer) @@ -32,13 +31,16 @@ class ActivityPub::Activity::FeatureRequest < ActivityPub::Activity def reject_request! collection_item = @collection.collection_items.build( - account: @featured_account, - state: :rejected + collection_item_attributes(:rejected) ) queue_delivery!(collection_item, ActivityPub::RejectFeatureRequestSerializer) end + def collection_item_attributes(state = :accepted) + { account: @featured_account, activity_uri: @json['id'], state: } + end + def queue_delivery!(collection_item, serializer) json = JSON.generate(serialize_payload(collection_item, serializer)) ActivityPub::DeliveryWorker.perform_async(json, @featured_account.id, @account.inbox_url) diff --git a/spec/lib/activitypub/activity/feature_request_spec.rb b/spec/lib/activitypub/activity/feature_request_spec.rb index ac3e42b272..4a3d60b5de 100644 --- a/spec/lib/activitypub/activity/feature_request_spec.rb +++ b/spec/lib/activitypub/activity/feature_request_spec.rb @@ -32,6 +32,7 @@ RSpec.describe ActivityPub::Activity::FeatureRequest do .with(satisfying do |body| response_json = JSON.parse(body) response_json['type'] == 'Accept' && + response_json['object'] == 'https://example.com/feature_requests/1' && response_json['to'] == sender.uri end, recipient.id, sender.inbox_url) end @@ -46,6 +47,7 @@ RSpec.describe ActivityPub::Activity::FeatureRequest do .with(satisfying do |body| response_json = JSON.parse(body) response_json['type'] == 'Reject' && + response_json['object'] == 'https://example.com/feature_requests/1' && response_json['to'] == sender.uri end, recipient.id, sender.inbox_url) end