diff options
author | Haelwenn <contact+git.pleroma.social@hacktivis.me> | 2022-03-20 18:13:19 +0000 |
---|---|---|
committer | Haelwenn <contact+git.pleroma.social@hacktivis.me> | 2022-03-20 18:13:19 +0000 |
commit | b76340511d52bb2db50e40de4bc513b3117799e0 (patch) | |
tree | f72d71a0c32324f5b97b9a614bdba4c183e76dea /lib/pleroma/user.ex | |
parent | 2db640632b81fb435456e4b3cc79901d02d7135c (diff) | |
parent | cdc5bbe8369d4fc66d642bb3e845a237d11e34d7 (diff) |
Merge branch 'delete_report_notifs_when_demoting_from_superuser' into 'develop'
Delete report notifs when demoting from superuser
Closes #2840
See merge request pleroma/pleroma!3642
Diffstat (limited to 'lib/pleroma/user.ex')
-rw-r--r-- | lib/pleroma/user.ex | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index 562581be4..65f0dfc70 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -1127,10 +1127,24 @@ defmodule Pleroma.User do |> update_and_set_cache() end - def update_and_set_cache(changeset) do + def update_and_set_cache(%{data: %Pleroma.User{} = user} = changeset) do + was_superuser_before_update = User.superuser?(user) + with {:ok, user} <- Repo.update(changeset, stale_error_field: :id) do set_cache(user) end + |> maybe_remove_report_notifications(was_superuser_before_update) + end + + defp maybe_remove_report_notifications({:ok, %Pleroma.User{} = user} = result, true) do + if not User.superuser?(user), + do: user |> Notification.destroy_multiple_from_types(["pleroma:report"]) + + result + end + + defp maybe_remove_report_notifications(result, _) do + result end def get_user_friends_ap_ids(user) do |