aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorlain <lain@soykaf.club>2018-02-23 15:00:41 +0100
committerlain <lain@soykaf.club>2018-02-23 15:00:41 +0100
commitaa79d64e0d278e30cb05cc3145a9539ea684bc6f (patch)
tree2297611c109b01905f0182a37710698b693fe290 /lib
parent2583a9f6e85dcc83940c763f83bea6a48c6d3528 (diff)
downloadpleroma-aa79d64e0d278e30cb05cc3145a9539ea684bc6f.tar.gz
Correctly stitch mastodon -> ostatus replies.
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/web/activity_pub/transmogrifier.ex19
1 files changed, 16 insertions, 3 deletions
diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex
index a845d64b5..a3bbae2a5 100644
--- a/lib/pleroma/web/activity_pub/transmogrifier.ex
+++ b/lib/pleroma/web/activity_pub/transmogrifier.ex
@@ -10,6 +10,8 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do
import Ecto.Query
+ require Logger
+
@doc """
Modifies an incoming AP object (mastodon format) to our internal format.
"""
@@ -43,6 +45,20 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do
with nil <- Activity.get_create_activity_by_object_ap_id(object["id"]),
%User{} = user <- User.get_or_fetch_by_ap_id(data["actor"]) do
object = fix_object(data["object"])
+
+ replied_to_id = if object["inReplyTo"] do
+ case ActivityPub.fetch_object_from_id(object["inReplyTo"]) do
+ {:ok, object} -> object.data["id"]
+ e ->
+ Logger.error("Couldn't fetch #{object["inReplyTo"]} #{inspect(e)}")
+ nil
+ end
+ else
+ nil
+ end
+
+ object = Map.put(object, "inReplyTo", replied_to_id || object["inReplyTo"])
+
params = %{
to: data["to"],
object: object,
@@ -56,9 +72,6 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do
])
}
- if object["inReplyTo"] do
- {:ok, object} = ActivityPub.fetch_object_from_id(object["inReplyTo"])
- end
ActivityPub.create(params)
else