projects
/
akkoma
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'develop' of git.pleroma.social:pleroma/pleroma into remake-remodel-dms
[akkoma]
/
lib
/
pleroma
/
web
/
pleroma_api
/
controllers
/
chat_controller.ex
diff --git
a/lib/pleroma/web/pleroma_api/controllers/chat_controller.ex
b/lib/pleroma/web/pleroma_api/controllers/chat_controller.ex
index 450d85332c7dc45d3340e5ed4bd1785e413281ac..04f136dcd77009bd92d312157966c71c735a5c48 100644
(file)
--- a/
lib/pleroma/web/pleroma_api/controllers/chat_controller.ex
+++ b/
lib/pleroma/web/pleroma_api/controllers/chat_controller.ex
@@
-14,9
+14,8
@@
defmodule Pleroma.Web.PleromaAPI.ChatController do
alias Pleroma.Web.PleromaAPI.ChatMessageView
alias Pleroma.Web.PleromaAPI.ChatView
alias Pleroma.Web.PleromaAPI.ChatMessageView
alias Pleroma.Web.PleromaAPI.ChatView
- import Pleroma.Web.ActivityPub.ObjectValidator, only: [stringify_keys: 1]
-
import Ecto.Query
import Ecto.Query
+ import Pleroma.Web.ActivityPub.ObjectValidator, only: [stringify_keys: 1]
# TODO
# - Error handling
# TODO
# - Error handling
@@
-28,7
+27,7
@@
defmodule Pleroma.Web.PleromaAPI.ChatController do
plug(
OAuthScopesPlug,
plug(
OAuthScopesPlug,
- %{scopes: ["read:statuses"]} when action in [:messages, :index]
+ %{scopes: ["read:statuses"]} when action in [:messages, :index
, :show
]
)
plug(OpenApiSpex.Plug.CastAndValidate, render_error: Pleroma.Web.ApiSpec.RenderError)
)
plug(OpenApiSpex.Plug.CastAndValidate, render_error: Pleroma.Web.ApiSpec.RenderError)
@@
-65,24
+64,8
@@
defmodule Pleroma.Web.PleromaAPI.ChatController do
def messages(%{assigns: %{user: %{id: user_id} = user}} = conn, %{id: id} = params) do
with %Chat{} = chat <- Repo.get_by(Chat, id: id, user_id: user_id) do
messages =
def messages(%{assigns: %{user: %{id: user_id} = user}} = conn, %{id: id} = params) do
with %Chat{} = chat <- Repo.get_by(Chat, id: id, user_id: user_id) do
messages =
- from(o in Object,
- where: fragment("?->>'type' = ?", o.data, "ChatMessage"),
- where:
- fragment(
- """
- (?->>'actor' = ? and ?->'to' = ?)
- OR (?->>'actor' = ? and ?->'to' = ?)
- """,
- o.data,
- ^user.ap_id,
- o.data,
- ^[chat.recipient],
- o.data,
- ^chat.recipient,
- o.data,
- ^[user.ap_id]
- )
- )
+ chat
+ |> Chat.messages_for_chat_query()
|> Pagination.fetch_paginated(params |> stringify_keys())
conn
|> Pagination.fetch_paginated(params |> stringify_keys())
conn
@@
-117,4
+100,12
@@
defmodule Pleroma.Web.PleromaAPI.ChatController do
|> render("show.json", chat: chat)
end
end
|> render("show.json", chat: chat)
end
end
+
+ def show(%{assigns: %{user: user}} = conn, params) do
+ with %Chat{} = chat <- Repo.get_by(Chat, user_id: user.id, id: params[:id]) do
+ conn
+ |> put_view(ChatView)
+ |> render("show.json", chat: chat)
+ end
+ end
end
end