d58bf8eda7bdf778ab3cac31edcc678b25009359
[anni] / lib / pleroma / web / admin_api / views / chat_view.ex
1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
4
5 defmodule Pleroma.Web.AdminAPI.ChatView do
6   use Pleroma.Web, :view
7
8   alias Pleroma.Chat
9   alias Pleroma.User
10   alias Pleroma.Web.MastodonAPI
11   alias Pleroma.Web.PleromaAPI
12
13   def render("index.json", %{chats: chats} = opts) do
14     render_many(chats, __MODULE__, "show.json", Map.delete(opts, :chats))
15   end
16
17   def render("show.json", %{chat: %Chat{user_id: user_id}} = opts) do
18     user = User.get_by_id(user_id)
19     sender = MastodonAPI.AccountView.render("show.json", user: user, skip_visibility_check: true)
20
21     serialized_chat = PleromaAPI.ChatView.render("show.json", opts)
22
23     serialized_chat
24     |> Map.put(:sender, sender)
25     |> Map.put(:receiver, serialized_chat[:account])
26     |> Map.delete(:account)
27   end
28
29   def render(view, opts), do: PleromaAPI.ChatView.render(view, opts)
30 end