mirror of
https://akkoma.dev/AkkomaGang/akkoma.git
synced 2024-11-19 19:54:38 +00:00
[#483] Blocked users export for TwitterAPI.
This commit is contained in:
parent
e1de866f95
commit
6e9a15b181
5 changed files with 32 additions and 4 deletions
|
@ -649,6 +649,9 @@ defmodule Pleroma.User do
|
||||||
end)
|
end)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def blocked_users(user),
|
||||||
|
do: Repo.all(from(u in User, where: u.ap_id in ^user.info.blocks))
|
||||||
|
|
||||||
def block_domain(user, domain) do
|
def block_domain(user, domain) do
|
||||||
info_cng =
|
info_cng =
|
||||||
user.info
|
user.info
|
||||||
|
|
|
@ -704,11 +704,9 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# TODO: Use proper query
|
|
||||||
def blocks(%{assigns: %{user: user}} = conn, _) do
|
def blocks(%{assigns: %{user: user}} = conn, _) do
|
||||||
with blocked_users <- user.info.blocks || [],
|
with blocked_accounts <- User.blocked_users(user) do
|
||||||
accounts <- Enum.map(blocked_users, fn ap_id -> User.get_cached_by_ap_id(ap_id) end) do
|
res = AccountView.render("accounts.json", users: blocked_accounts, for: user, as: :user)
|
||||||
res = AccountView.render("accounts.json", users: accounts, for: user, as: :user)
|
|
||||||
json(conn, res)
|
json(conn, res)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -281,6 +281,7 @@ defmodule Pleroma.Web.Router do
|
||||||
|
|
||||||
get("/statuses/followers", TwitterAPI.Controller, :followers)
|
get("/statuses/followers", TwitterAPI.Controller, :followers)
|
||||||
get("/statuses/friends", TwitterAPI.Controller, :friends)
|
get("/statuses/friends", TwitterAPI.Controller, :friends)
|
||||||
|
get("/statuses/blocks", TwitterAPI.Controller, :blocks)
|
||||||
get("/statuses/show/:id", TwitterAPI.Controller, :fetch_status)
|
get("/statuses/show/:id", TwitterAPI.Controller, :fetch_status)
|
||||||
get("/statusnet/conversation/:id", TwitterAPI.Controller, :fetch_conversation)
|
get("/statusnet/conversation/:id", TwitterAPI.Controller, :fetch_conversation)
|
||||||
|
|
||||||
|
|
|
@ -507,6 +507,14 @@ defmodule Pleroma.Web.TwitterAPI.Controller do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def blocks(%{assigns: %{user: user}} = conn, _params) do
|
||||||
|
with blocked_users <- User.blocked_users(user) do
|
||||||
|
conn
|
||||||
|
|> put_view(UserView)
|
||||||
|
|> render("index.json", %{users: blocked_users, for: user})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def friend_requests(conn, params) do
|
def friend_requests(conn, params) do
|
||||||
with {:ok, user} <- TwitterAPI.get_user(conn.assigns[:user], params),
|
with {:ok, user} <- TwitterAPI.get_user(conn.assigns[:user], params),
|
||||||
{:ok, friend_requests} <- User.get_follow_requests(user) do
|
{:ok, friend_requests} <- User.get_follow_requests(user) do
|
||||||
|
|
|
@ -1085,6 +1085,24 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe "GET /api/statuses/blocks" do
|
||||||
|
test "it returns the list of users blocked by requester", %{conn: conn} do
|
||||||
|
user = insert(:user)
|
||||||
|
other_user = insert(:user)
|
||||||
|
|
||||||
|
{:ok, user} = User.block(user, other_user)
|
||||||
|
|
||||||
|
conn =
|
||||||
|
conn
|
||||||
|
|> assign(:user, user)
|
||||||
|
|> get("/api/statuses/blocks")
|
||||||
|
|
||||||
|
expected = UserView.render("index.json", %{users: [other_user], for: user})
|
||||||
|
result = json_response(conn, 200)
|
||||||
|
assert Enum.sort(expected) == Enum.sort(result)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
describe "GET /api/statuses/friends" do
|
describe "GET /api/statuses/friends" do
|
||||||
test "it returns the logged in user's friends", %{conn: conn} do
|
test "it returns the logged in user's friends", %{conn: conn} do
|
||||||
user = insert(:user)
|
user = insert(:user)
|
||||||
|
|
Loading…
Reference in a new issue