|
|
@@ -815,13 +815,17 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do |
|
|
|
end |
|
|
|
|
|
|
|
def follow(%{assigns: %{user: follower}} = conn, %{"id" => id}) do |
|
|
|
with %User{} = followed <- User.get_by_id(id), |
|
|
|
with {_, %User{} = followed} <- {:followed, User.get_cached_by_id(id)}, |
|
|
|
{_, true} <- {:followed, follower.id != followed.id}, |
|
|
|
false <- User.following?(follower, followed), |
|
|
|
{:ok, follower, followed, _} <- CommonAPI.follow(follower, followed) do |
|
|
|
conn |
|
|
|
|> put_view(AccountView) |
|
|
|
|> render("relationship.json", %{user: follower, target: followed}) |
|
|
|
else |
|
|
|
{:followed, _} -> |
|
|
|
{:error, :not_found} |
|
|
|
|
|
|
|
true -> |
|
|
|
followed = User.get_cached_by_id(id) |
|
|
|
|
|
|
@@ -843,12 +847,16 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do |
|
|
|
end |
|
|
|
|
|
|
|
def follow(%{assigns: %{user: follower}} = conn, %{"uri" => uri}) do |
|
|
|
with %User{} = followed <- User.get_by_nickname(uri), |
|
|
|
with {_, %User{} = followed} <- {:followed, User.get_cached_by_nickname(uri)}, |
|
|
|
{_, true} <- {:followed, follower.id != followed.id}, |
|
|
|
{:ok, follower, followed, _} <- CommonAPI.follow(follower, followed) do |
|
|
|
conn |
|
|
|
|> put_view(AccountView) |
|
|
|
|> render("account.json", %{user: followed, for: follower}) |
|
|
|
else |
|
|
|
{:followed, _} -> |
|
|
|
{:error, :not_found} |
|
|
|
|
|
|
|
{:error, message} -> |
|
|
|
conn |
|
|
|
|> put_resp_content_type("application/json") |
|
|
@@ -857,11 +865,18 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do |
|
|
|
end |
|
|
|
|
|
|
|
def unfollow(%{assigns: %{user: follower}} = conn, %{"id" => id}) do |
|
|
|
with %User{} = followed <- User.get_by_id(id), |
|
|
|
with {_, %User{} = followed} <- {:followed, User.get_cached_by_id(id)}, |
|
|
|
{_, true} <- {:followed, follower.id != followed.id}, |
|
|
|
{:ok, follower} <- CommonAPI.unfollow(follower, followed) do |
|
|
|
conn |
|
|
|
|> put_view(AccountView) |
|
|
|
|> render("relationship.json", %{user: follower, target: followed}) |
|
|
|
else |
|
|
|
{:followed, _} -> |
|
|
|
{:error, :not_found} |
|
|
|
|
|
|
|
error -> |
|
|
|
error |
|
|
|
end |
|
|
|
end |
|
|
|
|
|
|
|