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
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)
|> 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"