aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWilliam Pitcock <nenolod@dereferenced.org>2018-06-13 22:14:53 +0000
committerWilliam Pitcock <nenolod@dereferenced.org>2018-06-13 22:19:38 +0000
commit401e8af9437f8a53540b93fc80d659c15f06e137 (patch)
treec472d6f80e812d1e37fa16c508c45dac15ee1a57
parentea42ba603fd0d3acd744f9f0b8ffb402e3ff1b2c (diff)
downloadpleroma-401e8af9437f8a53540b93fc80d659c15f06e137.tar.gz
activitypub transmogrifier: handle activity lookup failure
with the introduction of MRF, it is possible that an activity may be orphaned from it's parent, if an activity in the chain was rejected by the active MRF policies. accordingly, handle this in the same way as any other orphaned activity. closes #156
-rw-r--r--lib/pleroma/web/activity_pub/transmogrifier.ex21
1 files changed, 13 insertions, 8 deletions
diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex
index e7a3420d2..4c27a5704 100644
--- a/lib/pleroma/web/activity_pub/transmogrifier.ex
+++ b/lib/pleroma/web/activity_pub/transmogrifier.ex
@@ -30,14 +30,19 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do
when not is_nil(in_reply_to_id) do
case ActivityPub.fetch_object_from_id(in_reply_to_id) do
{:ok, replied_object} ->
- activity = Activity.get_create_activity_by_object_ap_id(replied_object.data["id"])
-
- object
- |> Map.put("inReplyTo", replied_object.data["id"])
- |> Map.put("inReplyToAtomUri", object["inReplyToAtomUri"] || in_reply_to_id)
- |> Map.put("inReplyToStatusId", activity.id)
- |> Map.put("conversation", replied_object.data["context"] || object["conversation"])
- |> Map.put("context", replied_object.data["context"] || object["conversation"])
+ with %Activity{} = activity <-
+ Activity.get_create_activity_by_object_ap_id(replied_object.data["id"]) do
+ object
+ |> Map.put("inReplyTo", replied_object.data["id"])
+ |> Map.put("inReplyToAtomUri", object["inReplyToAtomUri"] || in_reply_to_id)
+ |> Map.put("inReplyToStatusId", activity.id)
+ |> Map.put("conversation", replied_object.data["context"] || object["conversation"])
+ |> Map.put("context", replied_object.data["context"] || object["conversation"])
+ else
+ e ->
+ Logger.error("Couldn't fetch #{object["inReplyTo"]} #{inspect(e)}")
+ object
+ end
e ->
Logger.error("Couldn't fetch #{object["inReplyTo"]} #{inspect(e)}")