diff options
3 files changed, 18 insertions, 6 deletions
diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index 3e346d49a..8c2610eeb 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -608,11 +608,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do          |> Map.put(:muting_user, reading_user)        end -    pagination_type = -      cond do -        !Map.has_key?(params, :offset) -> :keyset -        true -> :offset -      end +    pagination_type = Map.get(params, :pagination_type) || :keyset      %{        godmode: params[:godmode], diff --git a/lib/pleroma/web/admin_api/controllers/admin_api_controller.ex b/lib/pleroma/web/admin_api/controllers/admin_api_controller.ex index 6ef8d6061..1c7c26d98 100644 --- a/lib/pleroma/web/admin_api/controllers/admin_api_controller.ex +++ b/lib/pleroma/web/admin_api/controllers/admin_api_controller.ex @@ -110,7 +110,8 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do            limit: page_size,            offset: (page - 1) * page_size,            godmode: godmode, -          exclude_reblogs: not with_reblogs +          exclude_reblogs: not with_reblogs, +          pagination_type: :offset          })        conn diff --git a/test/pleroma/web/mastodon_api/controllers/account_controller_test.exs b/test/pleroma/web/mastodon_api/controllers/account_controller_test.exs index f6285853a..cc7b3cf8b 100644 --- a/test/pleroma/web/mastodon_api/controllers/account_controller_test.exs +++ b/test/pleroma/web/mastodon_api/controllers/account_controller_test.exs @@ -469,6 +469,21 @@ defmodule Pleroma.Web.MastodonAPI.AccountControllerTest do                 }               ] = result      end + +    test "paginates a user's statuses", %{user: user, conn: conn} do +      {:ok, post_1} = CommonAPI.post(user, %{status: "first post"}) +      {:ok, post_2} = CommonAPI.post(user, %{status: "second post"}) + +      response_1 = get(conn, "/api/v1/accounts/#{user.id}/statuses?limit=1") +      assert [res] = json_response(response_1, 200) +      assert res["id"] == post_2.id + +      response_2 = get(conn, "/api/v1/accounts/#{user.id}/statuses?limit=1&max_id=#{res["id"]}") +      assert [res] = json_response(response_2, 200) +      assert res["id"] == post_1.id + +      refute response_1 == response_2 +    end    end    defp local_and_remote_activities(%{local: local, remote: remote}) do  | 
