[bugfix] Fix paging for empty items (#2236)

* use minID properly for public timeline

* return paged response properly even when 0 items

* use gtserror

* page more consistently (for now)

* test

* aaa
This commit is contained in:
tobi 2023-09-29 15:31:10 +02:00 committed by GitHub
commit 2b6b9cdf83
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 75 additions and 62 deletions

View file

@ -48,11 +48,6 @@ type PageableResponseParams struct {
// a bunch of pageable items (notifications, statuses, etc), as well
// as a Link header to inform callers of where to find next/prev items.
func PackagePageableResponse(params PageableResponseParams) (*apimodel.PageableResponse, gtserror.WithCode) {
if len(params.Items) == 0 {
// No items to page through.
return EmptyPageableResponse(), nil
}
// Set default paging values, if
// they weren't set by the caller.
if params.NextMaxIDKey == "" {

View file

@ -118,6 +118,7 @@ func (suite *PagingSuite) TestPagingNoItems() {
config.SetHost("example.org")
params := util.PageableResponseParams{
Path: "/api/v1/accounts/01H11KA68PM4NNYJEG0FJQ90R3/statuses",
NextMaxIDValue: "01H11KA1DM2VH3747YDE7FV5HN",
PrevMinIDValue: "01H11KBBVRRDYYC5KEPME1NP5R",
Limit: 10,
@ -129,9 +130,9 @@ func (suite *PagingSuite) TestPagingNoItems() {
}
suite.Empty(resp.Items)
suite.Empty(resp.LinkHeader)
suite.Empty(resp.NextLink)
suite.Empty(resp.PrevLink)
suite.Equal(`<https://example.org/api/v1/accounts/01H11KA68PM4NNYJEG0FJQ90R3/statuses?limit=10&max_id=01H11KA1DM2VH3747YDE7FV5HN>; rel="next", <https://example.org/api/v1/accounts/01H11KA68PM4NNYJEG0FJQ90R3/statuses?limit=10&min_id=01H11KBBVRRDYYC5KEPME1NP5R>; rel="prev"`, resp.LinkHeader)
suite.Equal(`https://example.org/api/v1/accounts/01H11KA68PM4NNYJEG0FJQ90R3/statuses?limit=10&max_id=01H11KA1DM2VH3747YDE7FV5HN`, resp.NextLink)
suite.Equal(`https://example.org/api/v1/accounts/01H11KA68PM4NNYJEG0FJQ90R3/statuses?limit=10&min_id=01H11KBBVRRDYYC5KEPME1NP5R`, resp.PrevLink)
}
func TestPagingSuite(t *testing.T) {