diff --git a/lib/mix/tasks/pleroma/email.ex b/lib/mix/tasks/pleroma/email.ex index 37272c124..76725f65f 100644 --- a/lib/mix/tasks/pleroma/email.ex +++ b/lib/mix/tasks/pleroma/email.ex @@ -33,7 +33,7 @@ defmodule Mix.Tasks.Pleroma.Email do Pleroma.User.Query.build(%{ local: true, - is_active: true, + deactivated: false, is_confirmed: false, invisible: false }) diff --git a/lib/mix/tasks/pleroma/user.ex b/lib/mix/tasks/pleroma/user.ex index 929fa1717..1035f2fce 100644 --- a/lib/mix/tasks/pleroma/user.ex +++ b/lib/mix/tasks/pleroma/user.ex @@ -362,7 +362,7 @@ defmodule Mix.Tasks.Pleroma.User do Pleroma.User.Query.build(%{ local: true, - is_active: true, + deactivated: false, is_moderator: false, is_admin: false, invisible: false @@ -380,7 +380,7 @@ defmodule Mix.Tasks.Pleroma.User do Pleroma.User.Query.build(%{ local: true, - is_active: true, + deactivated: false, is_moderator: false, is_admin: false, invisible: false diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index 3adc90c67..a8e08e335 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -969,7 +969,7 @@ defmodule Pleroma.User do candidates = Config.get([:instance, :autofollowed_nicknames]) autofollowed_users = - User.Query.build(%{nickname: candidates, local: true, is_active: true}) + User.Query.build(%{nickname: candidates, local: true, deactivated: false}) |> Repo.all() follow_all(user, autofollowed_users) @@ -1401,7 +1401,7 @@ defmodule Pleroma.User do @spec get_followers_query(User.t(), pos_integer() | nil) :: Ecto.Query.t() def get_followers_query(%User{} = user, nil) do - User.Query.build(%{followers: user, is_active: true}) + User.Query.build(%{followers: user, deactivated: false}) end def get_followers_query(%User{} = user, page) do @@ -1611,7 +1611,7 @@ defmodule Pleroma.User do @spec get_users_from_set([String.t()], keyword()) :: [User.t()] def get_users_from_set(ap_ids, opts \\ []) do local_only = Keyword.get(opts, :local_only, true) - criteria = %{ap_id: ap_ids, is_active: true} + criteria = %{ap_id: ap_ids, deactivated: false} criteria = if local_only, do: Map.put(criteria, :local, true), else: criteria User.Query.build(criteria) @@ -1622,7 +1622,7 @@ defmodule Pleroma.User do def get_recipients_from_activity(%Activity{recipients: to, actor: actor}) do to = [actor | to] - query = User.Query.build(%{recipients_from_activity: to, local: true, is_active: true}) + query = User.Query.build(%{recipients_from_activity: to, local: true, deactivated: false}) query |> Repo.all() @@ -2473,7 +2473,7 @@ defmodule Pleroma.User do @spec all_superusers() :: [User.t()] def all_superusers do - User.Query.build(%{super_users: true, local: true, is_active: true}) + User.Query.build(%{super_users: true, local: true, deactivated: false}) |> Repo.all() end diff --git a/test/pleroma/user_test.exs b/test/pleroma/user_test.exs index ec5a2a12a..86e873037 100644 --- a/test/pleroma/user_test.exs +++ b/test/pleroma/user_test.exs @@ -1197,11 +1197,32 @@ defmodule Pleroma.UserTest do res = User.get_followers(user) + assert length(res) == 2 assert Enum.member?(res, follower_one) assert Enum.member?(res, follower_two) refute Enum.member?(res, not_follower) end + test "does not return deactivated followers" do + user = insert(:user) + follower_one = insert(:user) + follower_two = insert(:user) + not_follower = insert(:user) + + {:ok, follower_one, user} = User.follow(follower_one, user) + {:ok, follower_two, user} = User.follow(follower_two, user) + + User.delete(follower_two) + follower_two = User.get_cached_by_id(follower_two.id) + + res = User.get_followers(user) + + assert length(res) == 1 + assert Enum.member?(res, follower_one) + refute Enum.member?(res, follower_two) + refute Enum.member?(res, not_follower) + end + test "gets all friends (followed users) for a given user" do user = insert(:user) followed_one = insert(:user) @@ -1215,10 +1236,34 @@ defmodule Pleroma.UserTest do followed_one = User.get_cached_by_ap_id(followed_one.ap_id) followed_two = User.get_cached_by_ap_id(followed_two.ap_id) + + assert length(res) == 2 assert Enum.member?(res, followed_one) assert Enum.member?(res, followed_two) refute Enum.member?(res, not_followed) end + + test "does not return deactivated followed users (friends)" do + user = insert(:user) + followed_one = insert(:user) + followed_two = insert(:user) + not_followed = insert(:user) + + {:ok, user, followed_one} = User.follow(user, followed_one) + {:ok, user, followed_two} = User.follow(user, followed_two) + + User.delete(followed_two) + + res = User.get_friends(user) + + followed_one = User.get_cached_by_id(followed_one.id) + followed_two = User.get_cached_by_id(followed_two.id) + + assert length(res) == 1 + assert Enum.member?(res, followed_one) + refute Enum.member?(res, followed_two) + refute Enum.member?(res, not_followed) + end end describe "updating note and follower count" do