Mastodon API: Return `pleroma.direct_conversation_id` when creating direct messages...
authoreugenijm <eugenijm@protonmail.com>
Thu, 19 Sep 2019 05:27:55 +0000 (08:27 +0300)
committereugenijm <eugenijm@protonmail.com>
Thu, 19 Sep 2019 05:59:25 +0000 (08:59 +0300)
CHANGELOG.md
lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex
test/web/mastodon_api/mastodon_api_controller_test.exs

index 906aa985ebbcbe46d43d1212fc0e0f90cdec033b..84b64e2b9adfa37d165a4b742f21119e40266ba2 100644 (file)
@@ -11,6 +11,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
 - Replaced [pleroma_job_queue](https://git.pleroma.social/pleroma/pleroma_job_queue) and `Pleroma.Web.Federator.RetryQueue` with [Oban](https://github.com/sorentwo/oban) (see [`docs/config.md`](docs/config.md) on migrating customized worker / retry settings)
 - Introduced [quantum](https://github.com/quantum-elixir/quantum-core) job scheduler
 - Admin API: Return `total` when querying for reports
+- Mastodon API: Return `pleroma.direct_conversation_id` when creating a direct message (`POST /api/v1/statuses`)
 
 ## [1.1.0] - 2019-??-??
 ### Security
index 37eeb2ac33be4d14d70da77a2f2dfa0ea04eb29f..6704ee7e8e1e2d1c00f90624f5339392253952d4 100644 (file)
@@ -611,7 +611,12 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
         {:ok, activity} ->
           conn
           |> put_view(StatusView)
-          |> try_render("status.json", %{activity: activity, for: user, as: :activity})
+          |> try_render("status.json", %{
+            activity: activity,
+            for: user,
+            as: :activity,
+            with_direct_conversation_id: true
+          })
       end
     end
   end
index fb04748bb447d04e4f9b6790a53ad4d28a760949..35a0d3fe157f86b96ae6ce1ae182b8d697f07a94 100644 (file)
@@ -296,7 +296,9 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
         conn
         |> post("api/v1/statuses", %{"status" => content, "visibility" => "direct"})
 
-      assert %{"id" => id, "visibility" => "direct"} = json_response(conn, 200)
+      assert %{"id" => id} = response = json_response(conn, 200)
+      assert response["visibility"] == "direct"
+      assert response["pleroma"]["direct_conversation_id"]
       assert activity = Activity.get_by_id(id)
       assert activity.recipients == [user2.ap_id, conn.assigns[:user].ap_id]
       assert activity.data["to"] == [user2.ap_id]