|
|
|
@ -176,6 +176,53 @@ defmodule Pleroma.Web.ActivityPub.UserView do
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def render("inbox.json", %{user: user, max_id: max_qid}) do
|
|
|
|
|
params = %{
|
|
|
|
|
"limit" => "10"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
params =
|
|
|
|
|
if max_qid != nil do
|
|
|
|
|
Map.put(params, "max_id", max_qid)
|
|
|
|
|
else
|
|
|
|
|
params
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
activities = ActivityPub.fetch_activities([user.ap_id | user.following], params)
|
|
|
|
|
|
|
|
|
|
min_id = Enum.at(Enum.reverse(activities), 0).id
|
|
|
|
|
max_id = Enum.at(activities, 0).id
|
|
|
|
|
|
|
|
|
|
collection =
|
|
|
|
|
Enum.map(activities, fn act ->
|
|
|
|
|
{:ok, data} = Transmogrifier.prepare_outgoing(act.data)
|
|
|
|
|
data
|
|
|
|
|
end)
|
|
|
|
|
|
|
|
|
|
iri = "#{user.ap_id}/inbox"
|
|
|
|
|
|
|
|
|
|
page = %{
|
|
|
|
|
"id" => "#{iri}?max_id=#{max_id}",
|
|
|
|
|
"type" => "OrderedCollectionPage",
|
|
|
|
|
"partOf" => iri,
|
|
|
|
|
"totalItems" => -1,
|
|
|
|
|
"orderedItems" => collection,
|
|
|
|
|
"next" => "#{iri}?max_id=#{min_id - 1}"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if max_qid == nil do
|
|
|
|
|
%{
|
|
|
|
|
"id" => iri,
|
|
|
|
|
"type" => "OrderedCollection",
|
|
|
|
|
"totalItems" => -1,
|
|
|
|
|
"first" => page
|
|
|
|
|
}
|
|
|
|
|
|> Map.merge(Utils.make_json_ld_header())
|
|
|
|
|
else
|
|
|
|
|
page |> Map.merge(Utils.make_json_ld_header())
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def collection(collection, iri, page, show_items \\ true, total \\ nil) do
|
|
|
|
|
offset = (page - 1) * 10
|
|
|
|
|
items = Enum.slice(collection, offset, 10)
|
|
|
|
|