allow `source` from misskey
authorFloatingGhost <hannah@coffee-and-dreams.uk>
Tue, 14 Jun 2022 09:56:18 +0000 (10:56 +0100)
committerFloatingGhost <hannah@coffee-and-dreams.uk>
Tue, 14 Jun 2022 09:56:18 +0000 (10:56 +0100)
lib/pleroma/web/activity_pub/object_validators/article_note_page_validator.ex
lib/pleroma/web/mastodon_api/views/status_view.ex

index e3f3110f2dd415480e84a6e4391fc4d385c85e16..118a10b096114a12dc9bedba05a2f46ffff718ed 100644 (file)
@@ -29,6 +29,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.ArticleNotePageValidator do
     end
 
     field(:replies, {:array, ObjectValidators.ObjectID}, default: [])
+    field(:source, :map)
   end
 
   def cast_and_apply(data) do
@@ -79,6 +80,17 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.ArticleNotePageValidator do
 
   defp fix_replies(data), do: data
 
+  # https://github.com/misskey-dev/misskey/pull/8787
+  defp fix_misskey_content(%{"source" => %{"mediaType" => "text/x.misskeymarkdown"}} = object), do: object
+
+  defp fix_misskey_content(%{"_misskey_content" => content} = object) do
+    object
+    |> Map.put("source", %{"content" => content, "mediaType" => "text/x.misskeymarkdown" })
+    |> Map.delete("_misskey_content")
+  end
+
+  defp fix_misskey_content(data), do: data
+
   defp fix(data) do
     data
     |> CommonFixes.fix_actor()
@@ -86,6 +98,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.ArticleNotePageValidator do
     |> fix_url()
     |> fix_tag()
     |> fix_replies()
+    |> fix_misskey_content()
     |> Transmogrifier.fix_emoji()
     |> Transmogrifier.fix_content_map()
   end
index 008040866adcdf09ad3e7879fe903687a448cc6b..b3d74254563b7db25981b2d4092912b4120074ca 100644 (file)
@@ -80,7 +80,6 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do
 
   def render("index.json", opts) do
     reading_user = opts[:for]
-
     # To do: check AdminAPIControllerTest on the reasons behind nil activities in the list
     activities = Enum.filter(opts.activities, & &1)
 
@@ -329,7 +328,6 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do
         )
 
     {pinned?, pinned_at} = pin_data(object, user)
-
     %{
       id: to_string(activity.id),
       uri: object.data["id"],
@@ -376,6 +374,9 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do
         emoji_reactions: emoji_reactions,
         parent_visible: visible_for_user?(reply_to, opts[:for]),
         pinned_at: pinned_at
+      },
+      akkoma: %{
+        source: object.data["source"]
       }
     }
   end