summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlain <lain@soykaf.club>2021-01-05 12:40:45 +0000
committerlain <lain@soykaf.club>2021-01-05 12:40:45 +0000
commit20a269ed694127ca59ece9c2e4865a627b4daad3 (patch)
tree4fff3f4fa54e70487f2c2f603648f632ee7c6db3
parent7a03b112f2ae0acbb546975a3cb57f63ab69708d (diff)
parent95a0ae8a35f97eb27423ca0e7da722e8f7f135e5 (diff)
Merge branch 'fix/pagination-regression' into 'develop'
Do not try to guess which pagination we need by the existence of an :offset param. Closes #2399 See merge request pleroma/pleroma!3230
-rw-r--r--lib/pleroma/web/activity_pub/activity_pub.ex6
-rw-r--r--lib/pleroma/web/admin_api/controllers/admin_api_controller.ex3
-rw-r--r--test/pleroma/web/mastodon_api/controllers/account_controller_test.exs15
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