class ActivityPub::Activity::Delete < ActivityPub::Activity
def perform
- status = Status.find_by(uri: object_uri, account: @account)
+ status = Status.find_by(uri: object_uri, account: @account)
+ status ||= Status.find_by(uri: @object['_:atomUri'], account: @account) if @object.is_a?(Hash) && @object['_:atomUri'].present?
if status.nil?
delete_later!(object_uri)
# frozen_string_literal: true
class ActivityPub::DeleteSerializer < ActiveModel::Serializer
+ class TombstoneSerializer < ActiveModel::Serializer
+ attributes :id, :type
+ attribute :atom_uri, key: '_:atomUri'
+
+ def id
+ ActivityPub::TagManager.instance.uri_for(object)
+ end
+
+ def type
+ 'Tombstone'
+ end
+
+ def atom_uri
+ ::TagManager.instance.uri_for(object)
+ end
+ end
+
attributes :id, :type, :actor
- attribute :virtual_object, key: :object
+
+ has_one :object, serializer: TombstoneSerializer
def id
[ActivityPub::TagManager.instance.uri_for(object), '#delete'].join
def actor
ActivityPub::TagManager.instance.uri_for(object.account)
end
-
- def virtual_object
- ActivityPub::TagManager.instance.uri_for(object)
- end
end