]> cat aescling's git repositories - mastodon.git/commitdiff
Add ActivityPub serializer for Undo of Announce (#4703)
authorEugen Rochko <eugen@zeonfederated.com>
Sat, 26 Aug 2017 13:32:40 +0000 (15:32 +0200)
committerGitHub <noreply@github.com>
Sat, 26 Aug 2017 13:32:40 +0000 (15:32 +0200)
app/serializers/activitypub/undo_announce_serializer.rb [new file with mode: 0644]
app/services/batched_remove_status_service.rb
app/services/remove_status_service.rb

diff --git a/app/serializers/activitypub/undo_announce_serializer.rb b/app/serializers/activitypub/undo_announce_serializer.rb
new file mode 100644 (file)
index 0000000..839847e
--- /dev/null
@@ -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
index c90f4401dfb7e2a68099562bddc30cd995e3e98b..e9e22298d5925a32a226e8a4791bdda09e284913 100644 (file)
@@ -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
index 62eea677f60154d0aec65c5b5361c5446d9d07c8..434c9de84782dade3c10286dde90d5fdd1499ca1 100644 (file)
@@ -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