|
|
|
@ -407,7 +407,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do
|
|
|
|
|
with nil <- Activity.get_create_by_object_ap_id(object["id"]),
|
|
|
|
|
{:ok, %User{} = user} <- User.get_or_fetch_by_ap_id(data["actor"]) do
|
|
|
|
|
options = Keyword.put(options, :depth, (options[:depth] || 0) + 1)
|
|
|
|
|
object = fix_object(data["object"], options)
|
|
|
|
|
object = fix_object(object, options)
|
|
|
|
|
|
|
|
|
|
params = %{
|
|
|
|
|
to: data["to"],
|
|
|
|
@ -913,20 +913,20 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do
|
|
|
|
|
Serialized Mastodon-compatible `replies` collection containing _self-replies_.
|
|
|
|
|
Based on Mastodon's ActivityPub::NoteSerializer#replies.
|
|
|
|
|
"""
|
|
|
|
|
def set_replies(obj) do
|
|
|
|
|
def set_replies(obj_data) do
|
|
|
|
|
limit = Pleroma.Config.get([:activitypub, :note_replies_output_limit], 0)
|
|
|
|
|
|
|
|
|
|
replies_uris =
|
|
|
|
|
with true <- limit > 0 || nil,
|
|
|
|
|
%Activity{} = activity <- Activity.get_create_by_object_ap_id(obj["id"]) do
|
|
|
|
|
activity
|
|
|
|
|
|> Activity.self_replies()
|
|
|
|
|
|> select([a], fragment("?->>'id'", a.data))
|
|
|
|
|
%Object{} = object <- Object.get_cached_by_ap_id(obj_data["id"]) do
|
|
|
|
|
object
|
|
|
|
|
|> Object.self_replies()
|
|
|
|
|
|> select([o], fragment("?->>'id'", o.data))
|
|
|
|
|
|> limit(^limit)
|
|
|
|
|
|> Repo.all()
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
set_replies(obj, replies_uris || [])
|
|
|
|
|
set_replies(obj_data, replies_uris || [])
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
defp set_replies(obj, replies_uris) when replies_uris in [nil, []] do
|
|
|
|
@ -952,7 +952,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do
|
|
|
|
|
Map.merge(obj, %{"replies" => replies_collection})
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def replies(%{"replies" => replies = %{}}) do
|
|
|
|
|
def replies(%{"replies" => replies} = _object) when is_map(replies) do
|
|
|
|
|
replies =
|
|
|
|
|
if is_map(replies["first"]) do
|
|
|
|
|
replies["first"]
|
|
|
|
|