logo

mastofe

My custom branche(s) on git.pleroma.social/pleroma/mastofe
commit: 884b085f534b02c664bcddd3a2fefcad6d4e5cc4
parent: 2a2698e4501094ca52b8b166c2c51fab26ce7427
Author: Eugen Rochko <eugen@zeonfederated.com>
Date:   Sat, 26 Aug 2017 16:10:35 +0200

Use Tombstone and _:atomUri in Delete activities as fallback (#4704)


Diffstat:

Mapp/lib/activitypub/activity/delete.rb3++-
Mapp/serializers/activitypub/delete_serializer.rb24+++++++++++++++++++-----
2 files changed, 21 insertions(+), 6 deletions(-)

diff --git a/app/lib/activitypub/activity/delete.rb b/app/lib/activitypub/activity/delete.rb @@ -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) diff --git a/app/serializers/activitypub/delete_serializer.rb b/app/serializers/activitypub/delete_serializer.rb @@ -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