summaryrefslogtreecommitdiff
path: root/lib/pleroma/web/admin_api/views/chat_view.ex
blob: 2a2015ad1e5622b4dc153fdccd9fb83e057602bf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# Pleroma: A lightweight social networking server
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only

defmodule Pleroma.Web.AdminAPI.ChatView do
  use Pleroma.Web, :view

  alias Pleroma.Chat
  alias Pleroma.User
  alias Pleroma.Web.MastodonAPI
  alias Pleroma.Web.PleromaAPI

  def render("index.json", %{chats: chats} = opts) do
    render_many(chats, __MODULE__, "show.json", Map.delete(opts, :chats))
  end

  def render("show.json", %{chat: %Chat{user_id: user_id}} = opts) do
    user = User.get_by_id(user_id)
    sender = MastodonAPI.AccountView.render("show.json", user: user, skip_visibility_check: true)

    serialized_chat = PleromaAPI.ChatView.render("show.json", opts)

    serialized_chat
    |> Map.put(:sender, sender)
    |> Map.put(:receiver, serialized_chat[:account])
    |> Map.delete(:account)
  end

  def render(view, opts), do: PleromaAPI.ChatView.render(view, opts)
end