diff options
Diffstat (limited to 'lib/pleroma/web/admin_api/controllers')
-rw-r--r-- | lib/pleroma/web/admin_api/controllers/chat_controller.ex | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/lib/pleroma/web/admin_api/controllers/chat_controller.ex b/lib/pleroma/web/admin_api/controllers/chat_controller.ex index bcce824d2..b423188d7 100644 --- a/lib/pleroma/web/admin_api/controllers/chat_controller.ex +++ b/lib/pleroma/web/admin_api/controllers/chat_controller.ex @@ -6,9 +6,13 @@ defmodule Pleroma.Web.AdminAPI.ChatController do use Pleroma.Web, :controller alias Pleroma.Activity + alias Pleroma.Chat + alias Pleroma.Chat.MessageReference alias Pleroma.ModerationLog + alias Pleroma.Pagination alias Pleroma.Plugs.OAuthScopesPlug alias Pleroma.Web.CommonAPI + alias Pleroma.Web.PleromaAPI.Chat.MessageReferenceView require Logger @@ -16,6 +20,11 @@ defmodule Pleroma.Web.AdminAPI.ChatController do plug( OAuthScopesPlug, + %{scopes: ["read:chats"], admin: true} when action in [:messages] + ) + + plug( + OAuthScopesPlug, %{scopes: ["write:chats"], admin: true} when action in [:delete_message] ) @@ -34,4 +43,22 @@ defmodule Pleroma.Web.AdminAPI.ChatController do json(conn, %{}) end end + + def messages(conn, %{id: id} = params) do + with %Chat{} = chat <- Chat.get_by_id(id) do + cm_refs = + chat + |> MessageReference.for_chat_query() + |> Pagination.fetch_paginated(params) + + conn + |> put_view(MessageReferenceView) + |> render("index.json", chat_message_references: cm_refs) + else + _ -> + conn + |> put_status(:not_found) + |> json(%{error: "not found"}) + end + end end |