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

1  2 
lib/pleroma/web/activity_pub/transmogrifier.ex

index f04f3c3c08dee56f792e5323055c09b9c15a5ee2,4c27a5704890364f2b218f40ab2d03ea1e4083c8..300e0fcdd350ecbec0a2b8b64a6b148258d7cdb2
@@@ -30,14 -30,19 +30,19 @@@ defmodule Pleroma.Web.ActivityPub.Trans
        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)}")
      with %User{} = actor <- User.get_or_fetch_by_ap_id(actor),
           {:ok, object} <-
             get_obj_helper(object_id) || ActivityPub.fetch_object_from_id(object_id),
 -         {:ok, activity, _, _} <- ActivityPub.unannounce(actor, object, id, false) do
 +         {:ok, activity, _} <- ActivityPub.unannounce(actor, object, id, false) do
        {:ok, activity}
      else
        _e -> :error