Move `follows`, `mutes` and `blocks` actions to AccountController
This commit is contained in:
parent
c5e937b156
commit
7f2bc57725
|
@ -301,4 +301,26 @@ def unblock(%{assigns: %{user: blocker, account: blocked}} = conn, _params) do
|
||||||
{:error, message} -> json_response(conn, :forbidden, %{error: message})
|
{:error, message} -> json_response(conn, :forbidden, %{error: message})
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@doc "POST /api/v1/follows"
|
||||||
|
def follows(%{assigns: %{user: follower}} = conn, %{"uri" => uri}) do
|
||||||
|
with {_, %User{} = followed} <- {:followed, User.get_cached_by_nickname(uri)},
|
||||||
|
{_, true} <- {:followed, follower.id != followed.id},
|
||||||
|
{:ok, follower, followed, _} <- CommonAPI.follow(follower, followed) do
|
||||||
|
render(conn, "show.json", user: followed, for: follower)
|
||||||
|
else
|
||||||
|
{:followed, _} -> {:error, :not_found}
|
||||||
|
{:error, message} -> json_response(conn, :forbidden, %{error: message})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
@doc "GET /api/v1/mutes"
|
||||||
|
def mutes(%{assigns: %{user: user}} = conn, _) do
|
||||||
|
render(conn, "index.json", users: User.muted_users(user), for: user, as: :user)
|
||||||
|
end
|
||||||
|
|
||||||
|
@doc "GET /api/v1/blocks"
|
||||||
|
def blocks(%{assigns: %{user: user}} = conn, _) do
|
||||||
|
render(conn, "index.json", users: User.blocked_users(user), for: user, as: :user)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -11,7 +11,6 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
|
||||||
alias Pleroma.Pagination
|
alias Pleroma.Pagination
|
||||||
alias Pleroma.User
|
alias Pleroma.User
|
||||||
alias Pleroma.Web.ActivityPub.ActivityPub
|
alias Pleroma.Web.ActivityPub.ActivityPub
|
||||||
alias Pleroma.Web.CommonAPI
|
|
||||||
alias Pleroma.Web.MastodonAPI.AccountView
|
alias Pleroma.Web.MastodonAPI.AccountView
|
||||||
alias Pleroma.Web.MastodonAPI.StatusView
|
alias Pleroma.Web.MastodonAPI.StatusView
|
||||||
|
|
||||||
|
@ -19,38 +18,6 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
|
||||||
|
|
||||||
action_fallback(Pleroma.Web.MastodonAPI.FallbackController)
|
action_fallback(Pleroma.Web.MastodonAPI.FallbackController)
|
||||||
|
|
||||||
def follows(%{assigns: %{user: follower}} = conn, %{"uri" => uri}) do
|
|
||||||
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("show.json", %{user: followed, for: follower})
|
|
||||||
else
|
|
||||||
{:followed, _} ->
|
|
||||||
{:error, :not_found}
|
|
||||||
|
|
||||||
{:error, message} ->
|
|
||||||
conn
|
|
||||||
|> put_status(:forbidden)
|
|
||||||
|> json(%{error: message})
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def mutes(%{assigns: %{user: user}} = conn, _) do
|
|
||||||
with muted_accounts <- User.muted_users(user) do
|
|
||||||
res = AccountView.render("index.json", users: muted_accounts, for: user, as: :user)
|
|
||||||
json(conn, res)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def blocks(%{assigns: %{user: user}} = conn, _) do
|
|
||||||
with blocked_accounts <- User.blocked_users(user) do
|
|
||||||
res = AccountView.render("index.json", users: blocked_accounts, for: user, as: :user)
|
|
||||||
json(conn, res)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def favourites(%{assigns: %{user: user}} = conn, params) do
|
def favourites(%{assigns: %{user: user}} = conn, params) do
|
||||||
params =
|
params =
|
||||||
params
|
params
|
||||||
|
|
|
@ -347,8 +347,8 @@ defmodule Pleroma.Web.Router do
|
||||||
get("/accounts/:id/identity_proofs", MastodonAPIController, :empty_array)
|
get("/accounts/:id/identity_proofs", MastodonAPIController, :empty_array)
|
||||||
|
|
||||||
get("/follow_requests", FollowRequestController, :index)
|
get("/follow_requests", FollowRequestController, :index)
|
||||||
get("/blocks", MastodonAPIController, :blocks)
|
get("/blocks", AccountController, :blocks)
|
||||||
get("/mutes", MastodonAPIController, :mutes)
|
get("/mutes", AccountController, :mutes)
|
||||||
|
|
||||||
get("/timelines/home", TimelineController, :home)
|
get("/timelines/home", TimelineController, :home)
|
||||||
get("/timelines/direct", TimelineController, :direct)
|
get("/timelines/direct", TimelineController, :direct)
|
||||||
|
@ -426,7 +426,7 @@ defmodule Pleroma.Web.Router do
|
||||||
scope [] do
|
scope [] do
|
||||||
pipe_through(:oauth_follow)
|
pipe_through(:oauth_follow)
|
||||||
|
|
||||||
post("/follows", MastodonAPIController, :follows)
|
post("/follows", AccountController, :follows)
|
||||||
post("/accounts/:id/follow", AccountController, :follow)
|
post("/accounts/:id/follow", AccountController, :follow)
|
||||||
post("/accounts/:id/unfollow", AccountController, :unfollow)
|
post("/accounts/:id/unfollow", AccountController, :unfollow)
|
||||||
post("/accounts/:id/block", AccountController, :block)
|
post("/accounts/:id/block", AccountController, :block)
|
||||||
|
|
|
@ -849,4 +849,34 @@ test "returns an empty list on a bad request", %{conn: conn} do
|
||||||
assert [] = json_response(conn, 200)
|
assert [] = json_response(conn, 200)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test "getting a list of mutes", %{conn: conn} do
|
||||||
|
user = insert(:user)
|
||||||
|
other_user = insert(:user)
|
||||||
|
|
||||||
|
{:ok, user} = User.mute(user, other_user)
|
||||||
|
|
||||||
|
conn =
|
||||||
|
conn
|
||||||
|
|> assign(:user, user)
|
||||||
|
|> get("/api/v1/mutes")
|
||||||
|
|
||||||
|
other_user_id = to_string(other_user.id)
|
||||||
|
assert [%{"id" => ^other_user_id}] = json_response(conn, 200)
|
||||||
|
end
|
||||||
|
|
||||||
|
test "getting a list of blocks", %{conn: conn} do
|
||||||
|
user = insert(:user)
|
||||||
|
other_user = insert(:user)
|
||||||
|
|
||||||
|
{:ok, user} = User.block(user, other_user)
|
||||||
|
|
||||||
|
conn =
|
||||||
|
conn
|
||||||
|
|> assign(:user, user)
|
||||||
|
|> get("/api/v1/blocks")
|
||||||
|
|
||||||
|
other_user_id = to_string(other_user.id)
|
||||||
|
assert [%{"id" => ^other_user_id}] = json_response(conn, 200)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -20,36 +20,6 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
|
||||||
|
|
||||||
clear_config([:rich_media, :enabled])
|
clear_config([:rich_media, :enabled])
|
||||||
|
|
||||||
test "getting a list of mutes", %{conn: conn} do
|
|
||||||
user = insert(:user)
|
|
||||||
other_user = insert(:user)
|
|
||||||
|
|
||||||
{:ok, user} = User.mute(user, other_user)
|
|
||||||
|
|
||||||
conn =
|
|
||||||
conn
|
|
||||||
|> assign(:user, user)
|
|
||||||
|> get("/api/v1/mutes")
|
|
||||||
|
|
||||||
other_user_id = to_string(other_user.id)
|
|
||||||
assert [%{"id" => ^other_user_id}] = json_response(conn, 200)
|
|
||||||
end
|
|
||||||
|
|
||||||
test "getting a list of blocks", %{conn: conn} do
|
|
||||||
user = insert(:user)
|
|
||||||
other_user = insert(:user)
|
|
||||||
|
|
||||||
{:ok, user} = User.block(user, other_user)
|
|
||||||
|
|
||||||
conn =
|
|
||||||
conn
|
|
||||||
|> assign(:user, user)
|
|
||||||
|> get("/api/v1/blocks")
|
|
||||||
|
|
||||||
other_user_id = to_string(other_user.id)
|
|
||||||
assert [%{"id" => ^other_user_id}] = json_response(conn, 200)
|
|
||||||
end
|
|
||||||
|
|
||||||
test "unimplemented follow_requests, blocks, domain blocks" do
|
test "unimplemented follow_requests, blocks, domain blocks" do
|
||||||
user = insert(:user)
|
user = insert(:user)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue