diff options
| -rw-r--r-- | lib/pleroma/web/activity_pub/transmogrifier.ex | 9 | ||||
| -rw-r--r-- | priv/static/schemas/litepub-0.1.jsonld | 2 | ||||
| -rw-r--r-- | test/pleroma/web/activity_pub/transmogrifier_test.exs | 4 | 
3 files changed, 15 insertions, 0 deletions
diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex index f5771e75e..163ae54fa 100644 --- a/lib/pleroma/web/activity_pub/transmogrifier.ex +++ b/lib/pleroma/web/activity_pub/transmogrifier.ex @@ -660,6 +660,14 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do    def set_reply_to_uri(obj), do: obj +  # Misskey quotes +  # Despite being underscored, it's potentially more reliable for interop. +  def set_quote_url(%{"quoteUrl" => quote_url} = object) when is_binary(quote_url) do +    Map.put(object, "_misskey_quote", quote_url) +  end + +  def set_quote_url(obj), do: obj +    @doc """    Serialized Mastodon-compatible `replies` collection containing _self-replies_.    Based on Mastodon's ActivityPub::NoteSerializer#replies. @@ -714,6 +722,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do      |> prepare_attachments      |> set_conversation      |> set_reply_to_uri +    |> set_quote_url      |> set_replies      |> strip_internal_fields      |> strip_internal_tags diff --git a/priv/static/schemas/litepub-0.1.jsonld b/priv/static/schemas/litepub-0.1.jsonld index 5d8244a11..8559e744d 100644 --- a/priv/static/schemas/litepub-0.1.jsonld +++ b/priv/static/schemas/litepub-0.1.jsonld @@ -17,6 +17,7 @@              "ostatus": "http://ostatus.org#",              "schema": "http://schema.org#",              "toot": "http://joinmastodon.org/ns#", +            "misskey": "https://misskey-hub.net/ns#",              "value": "schema:value",              "sensitive": "as:sensitive",              "litepub": "http://litepub.social/ns#", @@ -27,6 +28,7 @@                  "@type": "@id"              },              "quoteUrl": "as:quoteUrl", +            "_misskey_quote": "misskey:_misskey_quote",              "oauthRegistrationEndpoint": {                  "@id": "litepub:oauthRegistrationEndpoint",                  "@type": "@id" diff --git a/test/pleroma/web/activity_pub/transmogrifier_test.exs b/test/pleroma/web/activity_pub/transmogrifier_test.exs index 824398e38..8c7e0a4c9 100644 --- a/test/pleroma/web/activity_pub/transmogrifier_test.exs +++ b/test/pleroma/web/activity_pub/transmogrifier_test.exs @@ -382,7 +382,11 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do        {:ok, modified} = Transmogrifier.prepare_outgoing(quote_post.data)        quoted_post = Object.normalize(quoted_post) +        assert modified["object"]["quoteUrl"] == quoted_post.data["id"] + +      # Add Misskey's quote as a fallback +      assert modified["object"]["_misskey_quote"] == quoted_post.data["id"]      end    end  | 
