summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlain <lain@soykaf.club>2020-06-08 10:54:43 +0000
committerlain <lain@soykaf.club>2020-06-08 10:54:43 +0000
commitc450b248cc867172d07d7d6e2c3ac072b236732b (patch)
treeedf5116ceff6f8225e67677758c989bef6d8262f
parenta1aa9fa91320d527e93435fe236534003cd85d31 (diff)
parent8d9e58688712ea416109aaee2883cc9ace644e02 (diff)
Merge branch 'feature/delete-follow-requests-on-user-deletion' into 'develop'
Delete outgoing pending follow requests on user deletion See merge request pleroma/pleroma!2631
-rw-r--r--lib/pleroma/following_relationship.ex6
-rw-r--r--lib/pleroma/user.ex8
-rw-r--r--test/user_test.exs5
3 files changed, 19 insertions, 0 deletions
diff --git a/lib/pleroma/following_relationship.ex b/lib/pleroma/following_relationship.ex
index 3a3082e72..093b1f405 100644
--- a/lib/pleroma/following_relationship.ex
+++ b/lib/pleroma/following_relationship.ex
@@ -141,6 +141,12 @@ defmodule Pleroma.FollowingRelationship do
|> where([r], r.state == ^:follow_accept)
end
+ def outgoing_pending_follow_requests_query(%User{} = follower) do
+ __MODULE__
+ |> where([r], r.follower_id == ^follower.id)
+ |> where([r], r.state == ^:follow_pending)
+ end
+
def following(%User{} = user) do
following =
following_query(user)
diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex
index 72ee2d58e..c5c74d132 100644
--- a/lib/pleroma/user.ex
+++ b/lib/pleroma/user.ex
@@ -1489,6 +1489,8 @@ defmodule Pleroma.User do
delete_user_activities(user)
+ delete_outgoing_pending_follow_requests(user)
+
delete_or_deactivate(user)
end
@@ -1611,6 +1613,12 @@ defmodule Pleroma.User do
defp delete_activity(_activity, _user), do: "Doing nothing"
+ defp delete_outgoing_pending_follow_requests(user) do
+ user
+ |> FollowingRelationship.outgoing_pending_follow_requests_query()
+ |> Repo.delete_all()
+ end
+
def html_filter_policy(%User{no_rich_text: true}) do
Pleroma.HTML.Scrubber.TwitterText
end
diff --git a/test/user_test.exs b/test/user_test.exs
index 48c7605f5..98c79da4f 100644
--- a/test/user_test.exs
+++ b/test/user_test.exs
@@ -1159,6 +1159,9 @@ defmodule Pleroma.UserTest do
follower = insert(:user)
{:ok, follower} = User.follow(follower, user)
+ locked_user = insert(:user, name: "locked", locked: true)
+ {:ok, _} = User.follow(user, locked_user, :follow_pending)
+
object = insert(:note, user: user)
activity = insert(:note_activity, user: user, note: object)
@@ -1177,6 +1180,8 @@ defmodule Pleroma.UserTest do
refute User.following?(follower, user)
assert %{deactivated: true} = User.get_by_id(user.id)
+ assert [] == User.get_follow_requests(locked_user)
+
user_activities =
user.ap_id
|> Activity.Queries.by_actor()