Cleanup ScheduledActivityView
[akkoma] / lib / pleroma / web / mastodon_api / views / conversation_view.ex
index eb61baa03000676236e3ad336bc683a87f209a9d..4aeb79d81dc313ea0c49743622ef10f044d2d7c9 100644 (file)
@@ -1,14 +1,18 @@
+# Pleroma: A lightweight social networking server
+# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
+# SPDX-License-Identifier: AGPL-3.0-only
+
 defmodule Pleroma.Web.MastodonAPI.ConversationView do
   use Pleroma.Web, :view
 
   alias Pleroma.Activity
   alias Pleroma.Repo
-  alias Pleroma.Web.MastodonAPI.AccountView
   alias Pleroma.Web.ActivityPub.ActivityPub
+  alias Pleroma.Web.MastodonAPI.AccountView
   alias Pleroma.Web.MastodonAPI.StatusView
 
-  def render("participation.json", %{participation: participation, user: user}) do
-    participation = Repo.preload(participation, conversation: :users)
+  def render("participation.json", %{participation: participation, for: user}) do
+    participation = Repo.preload(participation, conversation: [], recipients: [])
 
     last_activity_id =
       with nil <- participation.last_activity_id do
@@ -20,11 +24,16 @@ defmodule Pleroma.Web.MastodonAPI.ConversationView do
 
     activity = Activity.get_by_id_with_object(last_activity_id)
 
-    last_status = StatusView.render("status.json", %{activity: activity, for: user})
+    last_status = StatusView.render("show.json", %{activity: activity, for: user})
+
+    # Conversations return all users except the current user.
+    users =
+      participation.recipients
+      |> Enum.reject(&(&1.id == user.id))
 
     accounts =
       AccountView.render("accounts.json", %{
-        users: participation.conversation.users,
+        users: users,
         as: :user
       })