CommonAPI: Use common pipeline for deletions.

This commit is contained in:
lain 2020-04-30 16:15:38 +02:00
parent c9bfa51ea9
commit fdd8e7f276
2 changed files with 6 additions and 4 deletions

View file

@ -30,7 +30,7 @@ def handle(%{data: %{"type" => "Like"}} = object, meta) do
end end
# Tasks this handles: # Tasks this handles:
# - Delete create activity # - Delete and unpins the create activity
# - Replace object with Tombstone # - Replace object with Tombstone
# - Set up notification # - Set up notification
def handle(%{data: %{"type" => "Delete", "object" => deleted_object}} = object, meta) do def handle(%{data: %{"type" => "Delete", "object" => deleted_object}} = object, meta) do
@ -40,7 +40,9 @@ def handle(%{data: %{"type" => "Delete", "object" => deleted_object}} = object,
result = result =
case deleted_object do case deleted_object do
%Object{} -> %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 :ok
end end

View file

@ -77,8 +77,8 @@ def delete(activity_id, user) do
{:find_activity, Activity.get_by_id_with_object(activity_id)}, {:find_activity, Activity.get_by_id_with_object(activity_id)},
%Object{} = object <- Object.normalize(activity), %Object{} = object <- Object.normalize(activity),
true <- User.superuser?(user) || user.ap_id == object.data["actor"], true <- User.superuser?(user) || user.ap_id == object.data["actor"],
{:ok, _} <- unpin(activity_id, user), {:ok, delete_data, _} <- Builder.delete(user, object.data["id"]),
{:ok, delete} <- ActivityPub.delete(object) do {:ok, delete, _} <- Pipeline.common_pipeline(delete_data, local: true) do
{:ok, delete} {:ok, delete}
else else
{:find_activity, _} -> {:error, :not_found} {:find_activity, _} -> {:error, :not_found}