aboutsummaryrefslogtreecommitdiff
path: root/lib/pleroma/user.ex
diff options
context:
space:
mode:
authorrinpatch <rin@patch.cx>2021-02-25 12:41:22 +0300
committerrinpatch <rin@patch.cx>2021-02-25 12:41:22 +0300
commitce20a74b204d70c13397a9bdfd9d7d97eed1eeda (patch)
treeda24216944c9e59fec1535dac05796ebb3270bd9 /lib/pleroma/user.ex
parent4286a383dfff02525ee07285094b7110ce0554fd (diff)
downloadpleroma-feat/user-deletion-transaction.tar.gz
Fix deletion by making it possible to insert activities as a deactivated userfeat/user-deletion-transaction
Diffstat (limited to 'lib/pleroma/user.ex')
-rw-r--r--lib/pleroma/user.ex27
1 files changed, 11 insertions, 16 deletions
diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex
index 9837166ea..66815c729 100644
--- a/lib/pleroma/user.ex
+++ b/lib/pleroma/user.ex
@@ -1738,21 +1738,16 @@ defmodule Pleroma.User do
defp delete_or_deactivate(%User{local: false} = user), do: delete_and_invalidate_cache(user)
- defp delete_or_deactivate(%User{local: true} = user) do
- status = account_status(user)
-
- case status do
- :confirmation_pending ->
- delete_and_invalidate_cache(user)
+ defp delete_or_deactivate(%User{is_confirmed: false} = user),
+ do: delete_and_invalidate_cache(user)
- :approval_pending ->
- delete_and_invalidate_cache(user)
+ defp delete_or_deactivate(%User{is_approved: false} = user),
+ do: delete_and_invalidate_cache(user)
- _ ->
- user
- |> purge_user_changeset()
- |> update_and_set_cache()
- end
+ defp delete_or_deactivate(%User{local: true} = user) do
+ user
+ |> purge_user_changeset()
+ |> update_and_set_cache()
end
def perform(:force_password_reset, user), do: force_password_reset(user)
@@ -1778,7 +1773,7 @@ defmodule Pleroma.User do
user
|> get_friends()
|> Enum.each(fn followed ->
- ActivityPub.unfollow(user, followed)
+ ActivityPub.unfollow(user, followed, nil, true, true)
unfollow(user, followed)
end)
@@ -1904,7 +1899,7 @@ defmodule Pleroma.User do
defp delete_activity(%{data: %{"type" => "Create", "object" => object}} = activity, user) do
with {_, %Object{}} <- {:find_object, Object.get_by_ap_id(object)},
{:ok, delete_data, _} <- Builder.delete(user, object) do
- Pipeline.common_pipeline(delete_data, local: user.local)
+ Pipeline.common_pipeline(delete_data, local: user.local, allow_deactivated_actor: true)
else
{:find_object, nil} ->
# We have the create activity, but not the object, it was probably pruned.
@@ -1922,7 +1917,7 @@ defmodule Pleroma.User do
defp delete_activity(%{data: %{"type" => type}} = activity, user)
when type in ["Like", "Announce"] do
with {:ok, undo, _} <- Builder.undo(user, activity) do
- Pipeline.common_pipeline(undo, local: user.local)
+ Pipeline.common_pipeline(undo, local: user.local, allow_deactivated_actor: true)
else
e -> e
end