Merge branch 'add-direct-conversation-id-to-status-show-page' into 'develop'
authorlain <lain@soykaf.club>
Wed, 9 Oct 2019 15:10:08 +0000 (15:10 +0000)
committerlain <lain@soykaf.club>
Wed, 9 Oct 2019 15:10:08 +0000 (15:10 +0000)
Add `pleroma.direct_conversation_id` to `GET /api/v1/statuses/:id`

See merge request pleroma/pleroma!1822

CHANGELOG.md
lib/pleroma/web/mastodon_api/controllers/status_controller.ex
test/web/mastodon_api/controllers/status_controller_test.exs

index 759745dd28f0b28896b245915236f955da2dece2..bd06ec866f9bd6a73306601f17a94ea1fb2e07f4 100644 (file)
@@ -28,6 +28,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
 - Admin API: Return link alongside with token on password reset
 - MRF (Simple Policy): Also use `:accept`/`:reject` on the actors rather than only their activities
 - OStatus: Extract RSS functionality
+- Mastodon API: Add `pleroma.direct_conversation_id` to the status endpoint (`GET /api/v1/statuses/:id`)
 
 ### Fixed
 - Mastodon API: Fix private and direct statuses not being filtered out from the public timeline for an authenticated user (`GET /api/v1/timelines/public`)
index 0c16e9b0f22d7b262a1dbbfc4c46c1934d771073..e5d016f63711dc0f899172448ddbef138a5f4cbb 100644 (file)
@@ -167,7 +167,11 @@ defmodule Pleroma.Web.MastodonAPI.StatusController do
   def show(%{assigns: %{user: user}} = conn, %{"id" => id}) do
     with %Activity{} = activity <- Activity.get_by_id_with_object(id),
          true <- Visibility.visible_for_user?(activity, user) do
-      try_render(conn, "show.json", activity: activity, for: user)
+      try_render(conn, "show.json",
+        activity: activity,
+        for: user,
+        with_direct_conversation_id: true
+      )
     end
   end
 
index a4bbfe0557bc2b7ff22414e78343b3cd51e4abdf..2de2725e014023ae17e1f15068f2b9afc6c93931 100644 (file)
@@ -8,6 +8,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusControllerTest do
   alias Pleroma.Activity
   alias Pleroma.ActivityExpiration
   alias Pleroma.Config
+  alias Pleroma.Conversation.Participation
   alias Pleroma.Object
   alias Pleroma.Repo
   alias Pleroma.ScheduledActivity
@@ -465,6 +466,24 @@ defmodule Pleroma.Web.MastodonAPI.StatusControllerTest do
     assert id == to_string(activity.id)
   end
 
+  test "get a direct status", %{conn: conn} do
+    user = insert(:user)
+    other_user = insert(:user)
+
+    {:ok, activity} =
+      CommonAPI.post(user, %{"status" => "@#{other_user.nickname}", "visibility" => "direct"})
+
+    conn =
+      conn
+      |> assign(:user, user)
+      |> get("/api/v1/statuses/#{activity.id}")
+
+    [participation] = Participation.for_user(user)
+
+    res = json_response(conn, 200)
+    assert res["pleroma"]["direct_conversation_id"] == participation.id
+  end
+
   test "get statuses by IDs", %{conn: conn} do
     %{id: id1} = insert(:note_activity)
     %{id: id2} = insert(:note_activity)