diff --git a/app/serializers/activitypub/undo_announce_serializer.rb b/app/serializers/activitypub/undo_announce_serializer.rb new file mode 100644 index 0000000000000000000000000000000000000000..839847e22c0ff183b7ffd2031155aa94e58de4ab --- /dev/null +++ b/app/serializers/activitypub/undo_announce_serializer.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +class ActivityPub::UndoAnnounceSerializer < ActiveModel::Serializer + attributes :id, :type, :actor + + has_one :object, serializer: ActivityPub::ActivitySerializer + + def id + [ActivityPub::TagManager.instance.uri_for(object.account), '#announces/', object.id, '/undo'].join + end + + def type + 'Undo' + end + + def actor + ActivityPub::TagManager.instance.uri_for(object.account) + end +end diff --git a/app/services/batched_remove_status_service.rb b/app/services/batched_remove_status_service.rb index c90f4401dfb7e2a68099562bddc30cd995e3e98b..e9e22298d5925a32a226e8a4791bdda09e284913 100644 --- a/app/services/batched_remove_status_service.rb +++ b/app/services/batched_remove_status_service.rb @@ -140,7 +140,7 @@ class BatchedRemoveStatusService < BaseService @activity_json[status.id] = sign_json(status, ActiveModelSerializers::SerializableResource.new( status, - serializer: ActivityPub::DeleteSerializer, + serializer: status.reblog? ? ActivityPub::UndoAnnounceSerializer : ActivityPub::DeleteSerializer, adapter: ActivityPub::Adapter ).as_json) end diff --git a/app/services/remove_status_service.rb b/app/services/remove_status_service.rb index 62eea677f60154d0aec65c5b5361c5446d9d07c8..434c9de84782dade3c10286dde90d5fdd1499ca1 100644 --- a/app/services/remove_status_service.rb +++ b/app/services/remove_status_service.rb @@ -81,7 +81,7 @@ class RemoveStatusService < BaseService def activity_json @activity_json ||= ActiveModelSerializers::SerializableResource.new( @status, - serializer: ActivityPub::DeleteSerializer, + serializer: @status.reblog? ? ActivityPub::UndoAnnounceSerializer : ActivityPub::DeleteSerializer, adapter: ActivityPub::Adapter ).as_json end