diff options
author | Roman Chvanikov <chvanikoff@pm.me> | 2019-07-24 16:37:52 +0300 |
---|---|---|
committer | Roman Chvanikov <chvanikoff@pm.me> | 2019-07-24 16:37:52 +0300 |
commit | d2da3d30f3349946500423bab53e0c1221ab7b9b (patch) | |
tree | 338d2e3b0412a9be89a462173e367495c5e9ad40 /lib/pleroma/user.ex | |
parent | afc7708dbe00a70be616f00f01b22b0d01b9b61b (diff) | |
parent | 53fad36b57b61b28db595e445cd01fd6044dab6b (diff) | |
download | pleroma-d2da3d30f3349946500423bab53e0c1221ab7b9b.tar.gz |
Merge branch 'develop' into feature/digest-email
Diffstat (limited to 'lib/pleroma/user.ex')
-rw-r--r-- | lib/pleroma/user.ex | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index c0e418e2f..e8a3f9663 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -587,12 +587,23 @@ defmodule Pleroma.User do @spec get_followers_query(User.t()) :: Ecto.Query.t() def get_followers_query(user), do: get_followers_query(user, nil) + @spec get_followers(User.t(), pos_integer()) :: {:ok, list(User.t())} def get_followers(user, page \\ nil) do q = get_followers_query(user, page) {:ok, Repo.all(q)} end + @spec get_external_followers(User.t(), pos_integer()) :: {:ok, list(User.t())} + def get_external_followers(user, page \\ nil) do + q = + user + |> get_followers_query(page) + |> User.Query.build(%{external: true}) + + {:ok, Repo.all(q)} + end + def get_followers_ids(user, page \\ nil) do q = get_followers_query(user, page) @@ -874,12 +885,17 @@ defmodule Pleroma.User do def blocks?(%User{info: info} = _user, %{ap_id: ap_id}) do blocks = info.blocks - domain_blocks = info.domain_blocks + + domain_blocks = Pleroma.Web.ActivityPub.MRF.subdomains_regex(info.domain_blocks) + %{host: host} = URI.parse(ap_id) - Enum.member?(blocks, ap_id) || Enum.any?(domain_blocks, &(&1 == host)) + Enum.member?(blocks, ap_id) || + Pleroma.Web.ActivityPub.MRF.subdomain_match?(domain_blocks, host) end + def blocks?(nil, _), do: false + def subscribed_to?(user, %{ap_id: ap_id}) do with %User{} = target <- get_cached_by_ap_id(ap_id) do Enum.member?(target.info.subscribers, user.ap_id) |