logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma
commit: 99f955cd9e48ba956da438926dd8626fe43aa3a1
parent: 33f8f3c33ad8c9e3ee8a5b9ad8c46676ffe96bce
Author: rinpatch <rinpatch@sdf.org>
Date:   Wed, 13 Feb 2019 13:04:23 +0000

Merge branch 'mass-follow-fixes' into 'develop'

User.follow_all: Respect blocks in both directions.

See merge request pleroma/pleroma!823

Diffstat:

Mlib/pleroma/user.ex4++--
Mtest/user_test.exs5++++-
2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex @@ -311,12 +311,12 @@ defmodule Pleroma.User do end end - @doc "A mass follow for local users. Respects blocks but does not create activities." + @doc "A mass follow for local users. Respects blocks in both directions but does not create activities." @spec follow_all(User.t(), list(User.t())) :: {atom(), User.t()} def follow_all(follower, followeds) do followed_addresses = followeds - |> Enum.reject(fn %{ap_id: ap_id} -> ap_id in follower.info.blocks end) + |> Enum.reject(fn followed -> blocks?(follower, followed) || blocks?(followed, follower) end) |> Enum.map(fn %{follower_address: fa} -> fa end) q = diff --git a/test/user_test.exs b/test/user_test.exs @@ -55,18 +55,21 @@ defmodule Pleroma.UserTest do followed_two = insert(:user) blocked = insert(:user) not_followed = insert(:user) + reverse_blocked = insert(:user) {:ok, user} = User.block(user, blocked) + {:ok, reverse_blocked} = User.block(reverse_blocked, user) {:ok, user} = User.follow(user, followed_zero) - {:ok, user} = User.follow_all(user, [followed_one, followed_two, blocked]) + {:ok, user} = User.follow_all(user, [followed_one, followed_two, blocked, reverse_blocked]) assert User.following?(user, followed_one) assert User.following?(user, followed_two) assert User.following?(user, followed_zero) refute User.following?(user, not_followed) refute User.following?(user, blocked) + refute User.following?(user, reverse_blocked) end test "follow_all follows mutliple users without duplicating" do