aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlain <lain@soykaf.club>2020-05-12 16:43:04 +0200
committerlain <lain@soykaf.club>2020-05-12 16:43:04 +0200
commitc0ea5c60e4e709d3d4415de42a65f878b55dc3bb (patch)
tree47a6b50a9c65c811cd5f5730ed70f28ec245548e
parente44166b510f95bfb2e679b2d64bbf7e0facd0dd2 (diff)
downloadpleroma-c0ea5c60e4e709d3d4415de42a65f878b55dc3bb.tar.gz
ChatController: Don't return chats for user you've blocked.
-rw-r--r--lib/pleroma/web/pleroma_api/controllers/chat_controller.ex5
-rw-r--r--test/web/pleroma_api/controllers/chat_controller_test.exs23
2 files changed, 27 insertions, 1 deletions
diff --git a/lib/pleroma/web/pleroma_api/controllers/chat_controller.ex b/lib/pleroma/web/pleroma_api/controllers/chat_controller.ex
index 4ce3e7419..496cb8e87 100644
--- a/lib/pleroma/web/pleroma_api/controllers/chat_controller.ex
+++ b/lib/pleroma/web/pleroma_api/controllers/chat_controller.ex
@@ -102,10 +102,13 @@ defmodule Pleroma.Web.PleromaAPI.ChatController do
end
end
- def index(%{assigns: %{user: %{id: user_id}}} = conn, params) do
+ def index(%{assigns: %{user: %{id: user_id} = user}} = conn, params) do
+ blocked_ap_ids = User.blocked_users_ap_ids(user)
+
chats =
from(c in Chat,
where: c.user_id == ^user_id,
+ where: c.recipient not in ^blocked_ap_ids,
order_by: [desc: c.updated_at]
)
|> Pagination.fetch_paginated(params |> stringify_keys)
diff --git a/test/web/pleroma_api/controllers/chat_controller_test.exs b/test/web/pleroma_api/controllers/chat_controller_test.exs
index 861ef10b0..037dd2297 100644
--- a/test/web/pleroma_api/controllers/chat_controller_test.exs
+++ b/test/web/pleroma_api/controllers/chat_controller_test.exs
@@ -6,6 +6,7 @@ defmodule Pleroma.Web.PleromaAPI.ChatControllerTest do
alias Pleroma.Chat
alias Pleroma.Object
+ alias Pleroma.User
alias Pleroma.Web.ActivityPub.ActivityPub
alias Pleroma.Web.CommonAPI
@@ -209,6 +210,28 @@ defmodule Pleroma.Web.PleromaAPI.ChatControllerTest do
describe "GET /api/v1/pleroma/chats" do
setup do: oauth_access(["read:statuses"])
+ test "it does not return chats with users you blocked", %{conn: conn, user: user} do
+ recipient = insert(:user)
+
+ {:ok, _} = Chat.get_or_create(user.id, recipient.ap_id)
+
+ result =
+ conn
+ |> get("/api/v1/pleroma/chats")
+ |> json_response_and_validate_schema(200)
+
+ assert length(result) == 1
+
+ User.block(user, recipient)
+
+ result =
+ conn
+ |> get("/api/v1/pleroma/chats")
+ |> json_response_and_validate_schema(200)
+
+ assert length(result) == 0
+ end
+
test "it paginates", %{conn: conn, user: user} do
Enum.each(1..30, fn _ ->
recipient = insert(:user)