Merge branch 'develop' into 'remove-avatar-header'
[akkoma] / lib / pleroma / web / mastodon_api / views / conversation_view.ex
1 defmodule Pleroma.Web.MastodonAPI.ConversationView do
2 use Pleroma.Web, :view
3
4 alias Pleroma.Activity
5 alias Pleroma.Repo
6 alias Pleroma.Web.ActivityPub.ActivityPub
7 alias Pleroma.Web.MastodonAPI.AccountView
8 alias Pleroma.Web.MastodonAPI.StatusView
9
10 def render("participation.json", %{participation: participation, user: user}) do
11 participation = Repo.preload(participation, conversation: :users)
12
13 last_activity_id =
14 with nil <- participation.last_activity_id do
15 ActivityPub.fetch_latest_activity_id_for_context(participation.conversation.ap_id, %{
16 "user" => user,
17 "blocking_user" => user
18 })
19 end
20
21 activity = Activity.get_by_id_with_object(last_activity_id)
22
23 last_status = StatusView.render("status.json", %{activity: activity, for: user})
24
25 # Conversations return all users except the current user.
26 users =
27 participation.conversation.users
28 |> Enum.reject(&(&1.id == user.id))
29
30 accounts =
31 AccountView.render("accounts.json", %{
32 users: users,
33 as: :user
34 })
35
36 %{
37 id: participation.id |> to_string(),
38 accounts: accounts,
39 unread: !participation.read,
40 last_status: last_status
41 }
42 end
43 end