Add accounts and last_status to conversation read response
authorRoman Chvanikov <chvanikoff@gmail.com>
Sun, 21 Apr 2019 13:26:13 +0000 (20:26 +0700)
committerRoman Chvanikov <chvanikoff@gmail.com>
Sun, 21 Apr 2019 13:26:13 +0000 (20:26 +0700)
lib/pleroma/web/mastodon_api/mastodon_api_controller.ex
test/web/mastodon_api/mastodon_api_controller_test.exs

index c7166ff289cbe11d34b8e9eacddde422f596a80b..86cacb0b059d2c71af9c73918c19d5f873607d84 100644 (file)
@@ -1617,14 +1617,30 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
     with %Participation{} = participation <-
            Repo.get_by(Participation, id: participation_id, user_id: user.id),
          {:ok, participation} <- Participation.mark_as_read(participation) do
+      participation = Repo.preload(participation, conversation: :users)
+
+      accounts =
+        AccountView.render("accounts.json", %{
+          users: participation.conversation.users,
+          as: :user
+        })
+
+      last_activity_id =
+        ActivityPub.fetch_latest_activity_id_for_context(participation.conversation.ap_id, %{
+          "user" => user,
+          "blocking_user" => user
+        })
+
+      activity = Activity.get_by_id_with_object(last_activity_id)
+
+      last_status = StatusView.render("status.json", %{activity: activity, for: user})
+
       conn
       |> json(%{
         id: participation.id,
-        # TODO: Add this.
-        accounts: [],
+        accounts: accounts,
         unread: !participation.read,
-        # TODO: Add this.
-        last_status: nil
+        last_status: last_status
       })
     end
   end
index 4fa5254f3cd538254ca47ba05c35108aa691827f..cf77dff78de7be1d80c8ef381bf6ac64fdf0354f 100644 (file)
@@ -346,6 +346,8 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
       |> post("/api/v1/conversations/#{res_id}/read")
 
     assert response = json_response(res_conn, 200)
+    assert length(response["accounts"]) == 2
+    assert response["last_status"]["id"] == direct.id
     assert response["unread"] == false
 
     # (vanilla) Mastodon frontend behaviour