Paginate the list of conversations

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
Thomas Citharel
2021-05-20 16:51:41 +02:00
parent 3abd97fc91
commit c9700906f5
4 changed files with 62 additions and 3 deletions

View File

@@ -14,7 +14,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Discussion do
def find_discussions_for_actor(
%Actor{id: group_id},
_args,
%{page: page, limit: limit},
%{
context: %{
current_user: %User{} = user
@@ -24,7 +24,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Discussion do
with {:actor, %Actor{id: actor_id} = _actor} <- {:actor, Users.get_actor_for_user(user)},
{:member, true} <- {:member, Actors.is_member?(actor_id, group_id)},
{:ok, %Actor{type: :Group} = group} <- Actors.get_group_by_actor_id(group_id) do
{:ok, Discussions.find_discussions_for_actor(group)}
{:ok, Discussions.find_discussions_for_actor(group, page, limit)}
else
{:member, false} ->
{:ok, %Page{total: 0, elements: []}}

View File

@@ -86,6 +86,12 @@ defmodule Mobilizon.GraphQL.Schema.Actors.GroupType do
end
field :discussions, :paginated_discussion_list do
arg(:page, :integer,
default_value: 1,
description: "The page in the paginated discussion list"
)
arg(:limit, :integer, default_value: 10, description: "The limit of discussions per page")
resolve(&Discussion.find_discussions_for_actor/3)
description("A list of the discussions for this group")
end