Merge branch 'bugfix/mrf-orphaning' into 'develop'
authorlambda <pleromagit@rogerbraun.net>
Thu, 14 Jun 2018 07:20:54 +0000 (07:20 +0000)
committerlambda <pleromagit@rogerbraun.net>
Thu, 14 Jun 2018 07:20:54 +0000 (07:20 +0000)
activitypub transmogrifier: handle activity lookup failure

Closes #156

See merge request pleroma/pleroma!216

lib/pleroma/web/activity_pub/transmogrifier.ex

index f04f3c3c08dee56f792e5323055c09b9c15a5ee2..300e0fcdd350ecbec0a2b8b64a6b148258d7cdb2 100644 (file)
@@ -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)}")