|
|
@ -170,25 +170,30 @@ defmodule Pleroma.User do
|
|
|
|
def follow(%User{} = follower, %User{info: info} = followed) do
|
|
|
|
def follow(%User{} = follower, %User{info: info} = followed) do
|
|
|
|
ap_followers = followed.follower_address
|
|
|
|
ap_followers = followed.follower_address
|
|
|
|
|
|
|
|
|
|
|
|
if following?(follower, followed) or info["deactivated"] do
|
|
|
|
cond do
|
|
|
|
{:error, "Could not follow user: #{followed.nickname} is already on your list."}
|
|
|
|
following?(follower, followed) or info["deactivated"] ->
|
|
|
|
else
|
|
|
|
{:error, "Could not follow user: #{followed.nickname} is already on your list."}
|
|
|
|
if !followed.local && follower.local && !ap_enabled?(followed) do
|
|
|
|
|
|
|
|
Websub.subscribe(follower, followed)
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
following =
|
|
|
|
blocks?(followed, follower) ->
|
|
|
|
[ap_followers | follower.following]
|
|
|
|
{:error, "Could not follow user: #{followed.nickname} blocked you."}
|
|
|
|
|> Enum.uniq()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
follower =
|
|
|
|
true ->
|
|
|
|
follower
|
|
|
|
if !followed.local && follower.local && !ap_enabled?(followed) do
|
|
|
|
|> follow_changeset(%{following: following})
|
|
|
|
Websub.subscribe(follower, followed)
|
|
|
|
|> update_and_set_cache
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
following =
|
|
|
|
|
|
|
|
[ap_followers | follower.following]
|
|
|
|
|
|
|
|
|> Enum.uniq()
|
|
|
|
|
|
|
|
|
|
|
|
{:ok, _} = update_follower_count(followed)
|
|
|
|
follower =
|
|
|
|
|
|
|
|
follower
|
|
|
|
|
|
|
|
|> follow_changeset(%{following: following})
|
|
|
|
|
|
|
|
|> update_and_set_cache
|
|
|
|
|
|
|
|
|
|
|
|
follower
|
|
|
|
{:ok, _} = update_follower_count(followed)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
follower
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|