From 0f9c9aac380a3864ee0099e2d398b395feda9fdc Mon Sep 17 00:00:00 2001 From: Oneric Date: Sat, 9 Nov 2024 16:52:12 +0100 Subject: [PATCH] Completely omit id for anonymous objects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Current AP spec demands anonymous objects to have an id value, but explicitly set it to JSON null. Howeveras it turns out this is incompatible with JSON-LD requiring `@id` to be a string and thus AP spec is incompatible iwth the Ativity Streams spec it is based on. This is an issue for (the few) AP implementers actually performing JSON-LD processing, like IceShrimp.NET. This was uncovered by IceShrimp.NET’s zotan due to our adoption of anonymous objects for emoj in f1018867097e6f293d8b2b5b6935f0a7ebf99bd0. The issues is being discussed by W3C, and will most likely be resolved via an errata redefining anonymous objects to completely omit the id field just like transient objects already do. See: https://github.com/w3c/activitypub/issues/476 Fixes: https://akkoma.dev/AkkomaGang/akkoma/issues/848 --- lib/pleroma/web/activity_pub/transmogrifier.ex | 3 +-- .../web/activity_pub/transmogrifier/note_handling_test.exs | 1 - test/pleroma/web/activity_pub/views/user_view_test.exs | 1 - 3 files changed, 1 insertion(+), 4 deletions(-) diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex index 75c1f0f0c..5c4db39b9 100644 --- a/lib/pleroma/web/activity_pub/transmogrifier.ex +++ b/lib/pleroma/web/activity_pub/transmogrifier.ex @@ -950,8 +950,7 @@ defp build_emoji_tag({name, url}) do "icon" => %{"url" => "#{URI.encode(url)}", "type" => "Image"}, "name" => ":" <> name <> ":", "type" => "Emoji", - "updated" => "1970-01-01T00:00:00Z", - "id" => nil + "updated" => "1970-01-01T00:00:00Z" } end diff --git a/test/pleroma/web/activity_pub/transmogrifier/note_handling_test.exs b/test/pleroma/web/activity_pub/transmogrifier/note_handling_test.exs index 92a096c2d..234a48990 100644 --- a/test/pleroma/web/activity_pub/transmogrifier/note_handling_test.exs +++ b/test/pleroma/web/activity_pub/transmogrifier/note_handling_test.exs @@ -698,7 +698,6 @@ test "take_emoji_tags/1" do assert Transmogrifier.take_emoji_tags(user) == [ %{ "icon" => %{"type" => "Image", "url" => "https://example.org/firefox.png"}, - "id" => nil, "name" => ":firefox:", "type" => "Emoji", "updated" => "1970-01-01T00:00:00Z" diff --git a/test/pleroma/web/activity_pub/views/user_view_test.exs b/test/pleroma/web/activity_pub/views/user_view_test.exs index 7e251e510..4283fb0c8 100644 --- a/test/pleroma/web/activity_pub/views/user_view_test.exs +++ b/test/pleroma/web/activity_pub/views/user_view_test.exs @@ -47,7 +47,6 @@ test "Renders with emoji tags" do "tag" => [ %{ "icon" => %{"type" => "Image", "url" => "/test"}, - "id" => nil, "name" => ":bib:", "type" => "Emoji", "updated" => "1970-01-01T00:00:00Z"