From ec58b6a4cc40be5f69d21c8262c26504c11a9b60 Mon Sep 17 00:00:00 2001 From: Lain Soykaf Date: Sun, 21 Dec 2025 15:19:38 +0400 Subject: [PATCH] CommonFixes, Transmogrifier: Fix tests. --- .../web/activity_pub/object_validators/common_fixes.ex | 10 ++++++---- lib/pleroma/web/activity_pub/transmogrifier.ex | 4 +++- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/lib/pleroma/web/activity_pub/object_validators/common_fixes.ex b/lib/pleroma/web/activity_pub/object_validators/common_fixes.ex index 7cee4c8e8..2e0f7a8a0 100644 --- a/lib/pleroma/web/activity_pub/object_validators/common_fixes.ex +++ b/lib/pleroma/web/activity_pub/object_validators/common_fixes.ex @@ -20,13 +20,15 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.CommonFixes do require Pleroma.Constants def cast_and_filter_recipients(message, field, follower_collection, field_fallback \\ []) do - # calling this here since we need to fix as:Public address before ObjectID cast throws it out - message = - message + # Fix as:Public/Public before ObjectID casting drops it, but keep `field_fallback` + # semantics (only used when the field is missing). + recipients = + %{field => message[field] || field_fallback} |> Transmogrifier.fix_addressing_list(field) |> Transmogrifier.fix_addressing_public(field) + |> Map.fetch!(field) - {:ok, data} = ObjectValidators.Recipients.cast(message[field] || field_fallback) + {:ok, data} = ObjectValidators.Recipients.cast(recipients) data = Enum.reject(data, fn x -> diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex index c96badb11..a358f3925 100644 --- a/lib/pleroma/web/activity_pub/transmogrifier.ex +++ b/lib/pleroma/web/activity_pub/transmogrifier.ex @@ -109,10 +109,12 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do https://codeberg.org/bovine/bovine/issues/53 """ def fix_addressing_public(map, field) do + addrs = Map.get(map, field, []) |> List.wrap() + Map.put( map, field, - Enum.map(Map.get(map, field), fn + Enum.map(addrs, fn "Public" -> Pleroma.Constants.as_public() "as:Public" -> Pleroma.Constants.as_public() x -> x