diff options
author | Eugenij <eugenijm@protonmail.com> | 2019-07-24 15:12:27 +0000 |
---|---|---|
committer | kaniini <ariadne@dereferenced.org> | 2019-07-24 15:12:27 +0000 |
commit | 4504135894d5b52c74818fadc3f7ed49ace1702b (patch) | |
tree | c3a6c24c3fda9442dd662b100135c6966a44989c /lib/pleroma/user.ex | |
parent | 53fad36b57b61b28db595e445cd01fd6044dab6b (diff) | |
download | pleroma-4504135894d5b52c74818fadc3f7ed49ace1702b.tar.gz |
Add `domain_blocking` to the relationship API (GET /api/v1/accounts/relationships)
Diffstat (limited to 'lib/pleroma/user.ex')
-rw-r--r-- | lib/pleroma/user.ex | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index 982ca8bc1..974f6df18 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -882,18 +882,25 @@ defmodule Pleroma.User do def muted_notifications?(user, %{ap_id: ap_id}), do: Enum.member?(user.info.muted_notifications, ap_id) - def blocks?(%User{info: info} = _user, %{ap_id: ap_id}) do - blocks = info.blocks + def blocks?(%User{} = user, %User{} = target) do + blocks_ap_id?(user, target) || blocks_domain?(user, target) + end - domain_blocks = Pleroma.Web.ActivityPub.MRF.subdomains_regex(info.domain_blocks) + def blocks?(nil, _), do: false - %{host: host} = URI.parse(ap_id) + def blocks_ap_id?(%User{} = user, %User{} = target) do + Enum.member?(user.info.blocks, target.ap_id) + end - Enum.member?(blocks, ap_id) || - Pleroma.Web.ActivityPub.MRF.subdomain_match?(domain_blocks, host) + def blocks_ap_id?(_, _), do: false + + def blocks_domain?(%User{} = user, %User{} = target) do + domain_blocks = Pleroma.Web.ActivityPub.MRF.subdomains_regex(user.info.domain_blocks) + %{host: host} = URI.parse(target.ap_id) + Pleroma.Web.ActivityPub.MRF.subdomain_match?(domain_blocks, host) end - def blocks?(nil, _), do: false + def blocks_domain?(_, _), do: false def subscribed_to?(user, %{ap_id: ap_id}) do with %User{} = target <- get_cached_by_ap_id(ap_id) do |