aboutsummaryrefslogtreecommitdiff
path: root/lib/pleroma/web/activity_pub/views
diff options
context:
space:
mode:
authorAlex Gleason <alex@alexgleason.me>2021-06-01 15:55:05 -0500
committerAlex Gleason <alex@alexgleason.me>2021-06-01 15:55:05 -0500
commit9d89e1736a08d6c559355e52a996782994608cd4 (patch)
treecf34422a48ea0e6cad4299db7816b094512416fe /lib/pleroma/web/activity_pub/views
parent9166ae1bcf8a8ec113bb21aab7effca5a14601ca (diff)
parent3fe6ada6fc6f42057cb346c04e4ecc9f35c0e5cb (diff)
downloadpleroma-cycles-config-url.tar.gz
Merge remote-tracking branch 'pleroma/develop' into cycles-config-urlcycles-config-url
Diffstat (limited to 'lib/pleroma/web/activity_pub/views')
-rw-r--r--lib/pleroma/web/activity_pub/views/user_view.ex22
1 files changed, 22 insertions, 0 deletions
diff --git a/lib/pleroma/web/activity_pub/views/user_view.ex b/lib/pleroma/web/activity_pub/views/user_view.ex
index 8adc9878a..344da19d3 100644
--- a/lib/pleroma/web/activity_pub/views/user_view.ex
+++ b/lib/pleroma/web/activity_pub/views/user_view.ex
@@ -6,8 +6,10 @@ defmodule Pleroma.Web.ActivityPub.UserView do
use Pleroma.Web, :view
alias Pleroma.Keys
+ alias Pleroma.Object
alias Pleroma.Repo
alias Pleroma.User
+ alias Pleroma.Web.ActivityPub.ObjectView
alias Pleroma.Web.ActivityPub.Transmogrifier
alias Pleroma.Web.ActivityPub.Utils
alias Pleroma.Web.Endpoint
@@ -97,6 +99,7 @@ defmodule Pleroma.Web.ActivityPub.UserView do
"followers" => "#{user.ap_id}/followers",
"inbox" => "#{user.ap_id}/inbox",
"outbox" => "#{user.ap_id}/outbox",
+ "featured" => "#{user.ap_id}/collections/featured",
"preferredUsername" => user.nickname,
"name" => user.name,
"summary" => user.bio,
@@ -245,6 +248,25 @@ defmodule Pleroma.Web.ActivityPub.UserView do
|> Map.merge(pagination)
end
+ def render("featured.json", %{
+ user: %{featured_address: featured_address, pinned_objects: pinned_objects}
+ }) do
+ objects =
+ pinned_objects
+ |> Enum.sort_by(fn {_, pinned_at} -> pinned_at end, &>=/2)
+ |> Enum.map(fn {id, _} ->
+ ObjectView.render("object.json", %{object: Object.get_cached_by_ap_id(id)})
+ end)
+
+ %{
+ "id" => featured_address,
+ "type" => "OrderedCollection",
+ "orderedItems" => objects,
+ "totalItems" => length(objects)
+ }
+ |> Map.merge(Utils.make_json_ld_header())
+ end
+
defp maybe_put_total_items(map, false, _total), do: map
defp maybe_put_total_items(map, true, total) do