diff options
author | Haelwenn (lanodan) Monnier <contact@hacktivis.me> | 2020-11-27 00:25:24 +0100 |
---|---|---|
committer | Egor Kislitsyn <egor@kislitsyn.com> | 2021-01-12 20:57:48 +0400 |
commit | b96c10766c545f6d6411cd499994d731c62b6aa6 (patch) | |
tree | 70915d1df061689194498b22747da869f83db1a6 /lib | |
parent | c66564a60ae830ebfbb901efce26d7eadb0b5b30 (diff) | |
download | pleroma-b96c10766c545f6d6411cd499994d731c62b6aa6.tar.gz |
utils: Fix maybe_splice_recipient when "object" isn’t a map
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pleroma/maps.ex | 6 | ||||
-rw-r--r-- | lib/pleroma/web/activity_pub/utils.ex | 6 |
2 files changed, 9 insertions, 3 deletions
diff --git a/lib/pleroma/maps.ex b/lib/pleroma/maps.ex index ab2e32e2f..f50b8e4b5 100644 --- a/lib/pleroma/maps.ex +++ b/lib/pleroma/maps.ex @@ -12,4 +12,10 @@ defmodule Pleroma.Maps do _ -> map end end + + def safe_put_in(data, keys, value) when is_map(data) and is_list(keys) do + Kernel.put_in(data, keys, value) + rescue + _ -> data + end end diff --git a/lib/pleroma/web/activity_pub/utils.ex b/lib/pleroma/web/activity_pub/utils.ex index 13b3c5582..bdb3b12d9 100644 --- a/lib/pleroma/web/activity_pub/utils.ex +++ b/lib/pleroma/web/activity_pub/utils.ex @@ -96,11 +96,11 @@ defmodule Pleroma.Web.ActivityPub.Utils do !label_in_collection?(ap_id, params["cc"]) if need_splice? do - cc_list = extract_list(params["cc"]) + cc = [ap_id | extract_list(params["cc"])] params - |> Map.put("cc", [ap_id | cc_list]) - |> Kernel.put_in(["object", "cc"], [ap_id | cc_list]) + |> Map.put("cc", cc) + |> Maps.safe_put_in(["object", "cc"], cc) else params end |