utils: Fix maybe_splice_recipient when "object" isn’t a map

This commit is contained in:
Haelwenn (lanodan) Monnier 2020-11-27 00:25:24 +01:00
parent 0b88accae6
commit 53193b84b1
No known key found for this signature in database
GPG key ID: D5B7A8E43C997DEE
3 changed files with 9 additions and 4 deletions

View file

@ -12,4 +12,10 @@ defmodule Pleroma.Maps do
_ -> map _ -> map
end end
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 end

View file

@ -96,11 +96,11 @@ defmodule Pleroma.Web.ActivityPub.Utils do
!label_in_collection?(ap_id, params["cc"]) !label_in_collection?(ap_id, params["cc"])
if need_splice? do if need_splice? do
cc_list = extract_list(params["cc"]) cc = [ap_id | extract_list(params["cc"])]
params params
|> Map.put("cc", [ap_id | cc_list]) |> Map.put("cc", cc)
|> Kernel.put_in(["object", "cc"], [ap_id | cc_list]) |> Maps.safe_put_in(["object", "cc"], cc)
else else
params params
end end

View file

@ -1003,7 +1003,6 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubControllerTest do
"actor" => remote_actor, "actor" => remote_actor,
"content" => "test report", "content" => "test report",
"id" => "https://#{remote_domain}/e3b12fd1-948c-446e-b93b-a5e67edbe1d8", "id" => "https://#{remote_domain}/e3b12fd1-948c-446e-b93b-a5e67edbe1d8",
"nickname" => reported_user.nickname,
"object" => [ "object" => [
reported_user.ap_id, reported_user.ap_id,
note.data["object"] note.data["object"]