diff options
| author | Sadposter <hannah+pleroma@coffee-and-dreams.uk> | 2019-04-08 12:46:12 +0100 | 
|---|---|---|
| committer | Sadposter <hannah+pleroma@coffee-and-dreams.uk> | 2019-04-08 12:46:12 +0100 | 
| commit | 13ff312c48c338c93ee9aa85ec2e48c2059d5168 (patch) | |
| tree | a662979656b3c36b8dec5459bc9299fba2c54c16 /lib | |
| parent | 76fdfd1c7f10332783ef167b7b996edd4813b1c3 (diff) | |
| download | pleroma-13ff312c48c338c93ee9aa85ec2e48c2059d5168.tar.gz pleroma-13ff312c48c338c93ee9aa85ec2e48c2059d5168.zip | |
Sever subscription in case of block
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/pleroma/user.ex | 31 | 
1 files changed, 24 insertions, 7 deletions
| diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index f1565ade7..9a80601c1 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -924,14 +924,23 @@ defmodule Pleroma.User do    end    def subscribe(subscriber, %{ap_id: ap_id}) do -    with %User{} = user <- get_or_fetch_by_ap_id(ap_id) do -      info_cng = -        user.info -        |> User.Info.add_to_subscribers(subscriber.ap_id) +    user_config = Application.get_env(:pleroma, :user) +    deny_follow_blocked = Keyword.get(user_config, :deny_follow_blocked) -      change(user) -      |> put_embed(:info, info_cng) -      |> update_and_set_cache() +    with %User{} = subscribed <- get_or_fetch_by_ap_id(ap_id) do +      blocked = blocks?(subscribed, subscriber) and deny_follow_blocked + +      if blocked do +        {:error, "Could not subscribe: #{subscribed.nickname} is blocking you"} +      else +        info_cng = +          subscribed.info +          |> User.Info.add_to_subscribers(subscriber.ap_id) + +        change(subscribed) +        |> put_embed(:info, info_cng) +        |> update_and_set_cache() +      end      end    end @@ -957,6 +966,14 @@ defmodule Pleroma.User do          blocker        end +    blocker = +      if subscribed_to?(blocked, blocker) do +        {:ok, blocker} = unsubscribe(blocked, blocker) +        blocker +      else +        blocker +      end +      if following?(blocked, blocker) do        unfollow(blocked, blocker)      end | 
