- blocks = user.info["blocks"] || []
- Enum.member?(blocks, ap_id)
+ blocks = user.info.blocks
+ domain_blocks = user.info.domain_blocks
+ %{host: host} = URI.parse(ap_id)
+
+ Enum.member?(blocks, ap_id) ||
+ Enum.any?(domain_blocks, fn domain ->
+ host == domain
+ end)
+ end
+
+ def block_domain(user, domain) do
+ info_cng =
+ user.info
+ |> User.Info.add_to_domain_block(domain)
+
+ cng =
+ change(user)
+ |> put_embed(:info, info_cng)
+
+ update_and_set_cache(cng)
+ end
+
+ def unblock_domain(user, domain) do
+ info_cng =
+ user.info
+ |> User.Info.remove_from_domain_block(domain)
+
+ cng =
+ change(user)
+ |> put_embed(:info, info_cng)
+
+ update_and_set_cache(cng)