diff options
author | lain <lain@soykaf.club> | 2018-02-23 15:00:41 +0100 |
---|---|---|
committer | lain <lain@soykaf.club> | 2018-02-23 15:00:41 +0100 |
commit | aa79d64e0d278e30cb05cc3145a9539ea684bc6f (patch) | |
tree | 2297611c109b01905f0182a37710698b693fe290 /lib | |
parent | 2583a9f6e85dcc83940c763f83bea6a48c6d3528 (diff) | |
download | pleroma-aa79d64e0d278e30cb05cc3145a9539ea684bc6f.tar.gz |
Correctly stitch mastodon -> ostatus replies.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pleroma/web/activity_pub/transmogrifier.ex | 19 |
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 |