X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;f=lib%2Fpleroma%2Fuser.ex;h=aa675a521f68713449715248f4b7b3be145bbf86;hb=92caae592338a3ca307686e7644f2de18bb57ce5;hp=b451202b255209cee0672c9ffd72e26c982ef5b7;hpb=908cf22a6cb07044eb0fb44c9673c8adcf22c0db;p=akkoma diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index b451202b2..aa675a521 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -29,7 +29,9 @@ defmodule Pleroma.User do alias Pleroma.UserRelationship alias Pleroma.Web alias Pleroma.Web.ActivityPub.ActivityPub + alias Pleroma.Web.ActivityPub.Builder alias Pleroma.Web.ActivityPub.ObjectValidators.Types + alias Pleroma.Web.ActivityPub.Pipeline alias Pleroma.Web.ActivityPub.Utils alias Pleroma.Web.CommonAPI alias Pleroma.Web.CommonAPI.Utils, as: CommonUtils @@ -1445,8 +1447,15 @@ defmodule Pleroma.User do end) delete_user_activities(user) - invalidate_cache(user) - Repo.delete(user) + + if user.local do + user + |> change(%{deactivated: true, email: nil}) + |> update_and_set_cache() + else + invalidate_cache(user) + Repo.delete(user) + end end def perform(:deactivate_async, user, status), do: deactivate(user, status) @@ -1545,20 +1554,14 @@ defmodule Pleroma.User do |> ActivityPub.delete() end - defp delete_activity(%{data: %{"type" => "Like"}} = activity) do - object = Object.normalize(activity) - - activity.actor - |> get_cached_by_ap_id() - |> ActivityPub.unlike(object) - end + defp delete_activity(%{data: %{"type" => type}} = activity) when type in ["Like", "Announce"] do + actor = + activity.actor + |> get_cached_by_ap_id() - defp delete_activity(%{data: %{"type" => "Announce"}} = activity) do - object = Object.normalize(activity) + {:ok, undo, _} = Builder.undo(actor, activity) - activity.actor - |> get_cached_by_ap_id() - |> ActivityPub.unannounce(object) + Pipeline.common_pipeline(undo, local: true) end defp delete_activity(_activity), do: "Doing nothing"