Use Tombstone and _:atomUri in Delete activities as fallback (#4704)
This commit is contained in:
		@@ -2,7 +2,8 @@
 | 
			
		||||
 | 
			
		||||
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)
 | 
			
		||||
 
 | 
			
		||||
@@ -1,8 +1,26 @@
 | 
			
		||||
# 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
 | 
			
		||||
@@ -15,8 +33,4 @@ class ActivityPub::DeleteSerializer < ActiveModel::Serializer
 | 
			
		||||
  def actor
 | 
			
		||||
    ActivityPub::TagManager.instance.uri_for(object.account)
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def virtual_object
 | 
			
		||||
    ActivityPub::TagManager.instance.uri_for(object)
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user