clear follow requests when blocking a user

This commit is contained in:
Sadposter 2019-08-18 20:29:31 +01:00
parent 7ab2dbbdb6
commit 94e336d9d5
2 changed files with 19 additions and 0 deletions

View File

@ -21,6 +21,7 @@ defmodule Pleroma.User do
alias Pleroma.Web
alias Pleroma.Web.ActivityPub.ActivityPub
alias Pleroma.Web.ActivityPub.Utils
alias Pleroma.Web.CommonAPI
alias Pleroma.Web.CommonAPI.Utils, as: CommonUtils
alias Pleroma.Web.OAuth
alias Pleroma.Web.OStatus
@ -914,6 +915,13 @@ def block(blocker, %User{ap_id: ap_id} = blocked) do
blocker
end
# clear any requested follows as well
blocked =
case CommonAPI.reject_follow_request(blocked, blocker) do
{:ok, %User{} = updated_blocked} -> updated_blocked
nil -> blocked
end
blocker =
if subscribed_to?(blocked, blocker) do
{:ok, blocker} = unsubscribe(blocked, blocker)

View File

@ -90,6 +90,17 @@ test "doesn't return already accepted or duplicate follow requests" do
assert activity
end
test "clears follow requests when requester is blocked" do
followed = insert(:user, %{info: %{locked: true}})
follower = insert(:user)
Pleroma.Web.TwitterAPI.TwitterAPI.follow(follower, %{"user_id" => followed.id})
assert {:ok, [_activity]} = User.get_follow_requests(followed)
{:ok, _follower} = User.block(followed, follower)
assert {:ok, []} = User.get_follow_requests(followed)
end
test "follow_all follows mutliple users" do
user = insert(:user)
followed_zero = insert(:user)