CommonAPI: Use common pipeline for deletions.
authorlain <lain@soykaf.club>
Thu, 30 Apr 2020 14:15:38 +0000 (16:15 +0200)
committerlain <lain@soykaf.club>
Thu, 30 Apr 2020 14:15:38 +0000 (16:15 +0200)
lib/pleroma/web/activity_pub/side_effects.ex
lib/pleroma/web/common_api/common_api.ex

index ac1d4c2223d63c187a606d5b9fce62b8ce09e789..ef58fa39944b241a211ed54c870f510daa3d2d25 100644 (file)
@@ -30,7 +30,7 @@ defmodule Pleroma.Web.ActivityPub.SideEffects do
   end
 
   # Tasks this handles:
-  # - Delete create activity
+  # - Delete and unpins the create activity
   # - Replace object with Tombstone
   # - Set up notification
   def handle(%{data: %{"type" => "Delete", "object" => deleted_object}} = object, meta) do
@@ -40,7 +40,9 @@ defmodule Pleroma.Web.ActivityPub.SideEffects do
     result =
       case deleted_object do
         %Object{} ->
-          with {:ok, _, _} <- Object.delete(deleted_object) do
+          with {:ok, _, activity} <- Object.delete(deleted_object),
+               %User{} = user <- User.get_cached_by_ap_id(deleted_object.data["actor"]) do
+            User.remove_pinnned_activity(user, activity)
             :ok
           end
 
index d1efe0c36e0d1a19eb9377d700639c2434ef8bb0..7cb8e47d0c4a7ccc6f2aed42d3ac34b556c1eb83 100644 (file)
@@ -77,8 +77,8 @@ defmodule Pleroma.Web.CommonAPI do
            {:find_activity, Activity.get_by_id_with_object(activity_id)},
          %Object{} = object <- Object.normalize(activity),
          true <- User.superuser?(user) || user.ap_id == object.data["actor"],
-         {:ok, _} <- unpin(activity_id, user),
-         {:ok, delete} <- ActivityPub.delete(object) do
+         {:ok, delete_data, _} <- Builder.delete(user, object.data["id"]),
+         {:ok, delete, _} <- Pipeline.common_pipeline(delete_data, local: true) do
       {:ok, delete}
     else
       {:find_activity, _} -> {:error, :not_found}