From: FloatingGhost Date: Tue, 14 Jun 2022 09:56:18 +0000 (+0100) Subject: allow `source` from misskey X-Git-Url: https://git.squeep.com/?a=commitdiff_plain;h=3f06ccc9e346fdf5278c19998170c968da930d17;p=akkoma allow `source` from misskey --- diff --git a/lib/pleroma/web/activity_pub/object_validators/article_note_page_validator.ex b/lib/pleroma/web/activity_pub/object_validators/article_note_page_validator.ex index e3f3110f2..118a10b09 100644 --- a/lib/pleroma/web/activity_pub/object_validators/article_note_page_validator.ex +++ b/lib/pleroma/web/activity_pub/object_validators/article_note_page_validator.ex @@ -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 diff --git a/lib/pleroma/web/mastodon_api/views/status_view.ex b/lib/pleroma/web/mastodon_api/views/status_view.ex index 008040866..b3d742545 100644 --- a/lib/pleroma/web/mastodon_api/views/status_view.ex +++ b/lib/pleroma/web/mastodon_api/views/status_view.ex @@ -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