mastodon api: add conversation_id extension (ref #674)
authorWilliam Pitcock <nenolod@dereferenced.org>
Thu, 21 Mar 2019 23:25:41 +0000 (23:25 +0000)
committerWilliam Pitcock <nenolod@dereferenced.org>
Thu, 21 Mar 2019 23:25:41 +0000 (23:25 +0000)
lib/pleroma/web/mastodon_api/views/status_view.ex
test/web/mastodon_api/status_view_test.exs

index 209119dd51a2268cc0e9b9f419856f595a762ec2..1ca8338cc074c0268fe419600d9ddd0151ace80a 100644 (file)
@@ -46,6 +46,14 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do
     end
   end
 
+  defp get_context_id(%{data: %{"context_id" => context_id}}) when not is_nil(context_id),
+    do: context_id
+
+  defp get_context_id(%{data: %{"context" => context}}) when is_binary(context),
+    do: Utils.context_to_conversation_id(context)
+
+  defp get_context_id(_), do: nil
+
   def render("index.json", opts) do
     replied_to_activities = get_replied_to_activities(opts.activities)
 
@@ -186,7 +194,8 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do
       language: nil,
       emojis: build_emojis(activity.data["object"]["emoji"]),
       pleroma: %{
-        local: activity.local
+        local: activity.local,
+        conversation_id: get_context_id(activity)
       }
     }
   end
index ade0ca9f9e8a6c3683e8836ddf650aaf0dd4c382..e1c9b2c8f61a03897673143f77800204d8b346ae 100644 (file)
@@ -9,6 +9,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusViewTest do
   alias Pleroma.User
   alias Pleroma.Web.ActivityPub.ActivityPub
   alias Pleroma.Web.CommonAPI
+  alias Pleroma.Web.CommonAPI.Utils
   alias Pleroma.Web.MastodonAPI.AccountView
   alias Pleroma.Web.MastodonAPI.StatusView
   alias Pleroma.Web.OStatus
@@ -72,6 +73,8 @@ defmodule Pleroma.Web.MastodonAPI.StatusViewTest do
     note = insert(:note_activity)
     user = User.get_cached_by_ap_id(note.data["actor"])
 
+    convo_id = Utils.context_to_conversation_id(note.data["object"]["context"])
+
     status = StatusView.render("status.json", %{activity: note})
 
     created_at =
@@ -122,7 +125,8 @@ defmodule Pleroma.Web.MastodonAPI.StatusViewTest do
         }
       ],
       pleroma: %{
-        local: true
+        local: true,
+        conversation_id: convo_id
       }
     }