X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;f=lib%2Fpleroma%2Fweb%2Factivity_pub%2Fviews%2Fuser_view.ex;h=92afd0872091727412f7af9918fc2a11fa236773;hb=b3d67750f04d7c72c3e1deeb6df573cbb195146a;hp=997d8308f913237e76f7e15f62d635c42336d1c9;hpb=4afbef39f49948ddd3b1cd1bbda58ff7e3ac2785;p=akkoma diff --git a/lib/pleroma/web/activity_pub/views/user_view.ex b/lib/pleroma/web/activity_pub/views/user_view.ex index 997d8308f..92afd0872 100644 --- a/lib/pleroma/web/activity_pub/views/user_view.ex +++ b/lib/pleroma/web/activity_pub/views/user_view.ex @@ -3,9 +3,11 @@ defmodule Pleroma.Web.ActivityPub.UserView do alias Pleroma.Web.Salmon alias Pleroma.Web.WebFinger alias Pleroma.User + alias Pleroma.Repo alias Pleroma.Web.ActivityPub.ActivityPub alias Pleroma.Web.ActivityPub.Transmogrifier alias Pleroma.Web.ActivityPub.Utils + import Ecto.Query def render("user.json", %{user: user}) do {:ok, user} = WebFinger.ensure_keys_present(user) @@ -45,10 +47,11 @@ defmodule Pleroma.Web.ActivityPub.UserView do |> Map.merge(Utils.make_json_ld_header()) end - def collection(collection, iri, page) do + def collection(collection, iri, page, total \\ nil) do offset = (page - 1) * 10 items = Enum.slice(collection, offset, 10) items = Enum.map(items, fn user -> user.ap_id end) + total = total || length(collection) map = %{ "id" => "#{iri}?page=#{page}", @@ -64,14 +67,18 @@ defmodule Pleroma.Web.ActivityPub.UserView do end def render("following.json", %{user: user, page: page}) do - {:ok, following} = User.get_friends(user) + query = User.get_friends_query(user) + query = from(user in query, select: [:ap_id]) + following = Repo.all(query) collection(following, "#{user.ap_id}/following", page) |> Map.merge(Utils.make_json_ld_header()) end def render("following.json", %{user: user}) do - {:ok, following} = User.get_friends(user) + query = User.get_friends_query(user) + query = from(user in query, select: [:ap_id]) + following = Repo.all(query) %{ "id" => "#{user.ap_id}/following", @@ -83,14 +90,18 @@ defmodule Pleroma.Web.ActivityPub.UserView do end def render("followers.json", %{user: user, page: page}) do - {:ok, followers} = User.get_followers(user) + query = User.get_followers_query(user) + query = from(user in query, select: [:ap_id]) + followers = Repo.all(query) collection(followers, "#{user.ap_id}/followers", page) |> Map.merge(Utils.make_json_ld_header()) end def render("followers.json", %{user: user}) do - {:ok, followers} = User.get_followers(user) + query = User.get_followers_query(user) + query = from(user in query, select: [:ap_id]) + followers = Repo.all(query) %{ "id" => "#{user.ap_id}/followers",