Skip to content

Commit 8c9e033

Browse files
committed
Fixed endCursor (was pointing to end of collection)
1 parent 9b319aa commit 8c9e033

File tree

3 files changed

+10
-8
lines changed

3 files changed

+10
-8
lines changed

src/Resolve/ResolveCollectionFactory.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,7 @@ protected function buildPagination(
190190
'edges' => $edgesAndCursors['edges'],
191191
'totalCount' => $itemCount,
192192
'pageInfo' => [
193-
'endCursor' => $edgesAndCursors['cursors']['end'],
193+
'endCursor' => $edgesAndCursors['cursors']['last'],
194194
'startCursor' => $edgesAndCursors['cursors']['start'],
195195
'hasNextPage' => $edgesAndCursors['cursors']['end'] !== $edgesAndCursors['cursors']['last'],
196196
'hasPreviousPage' => $edgesAndCursors['cursors']['first'] !== null
@@ -230,7 +230,8 @@ protected function buildEdgesAndCursors(Collection $items, array $offsetAndLimit
230230
$index++;
231231
}
232232

233-
$cursors['end'] = $cursors['last'] ?? base64_encode('0');
233+
$endIndex = $itemCount ? $itemCount - 1 : 0;
234+
$cursors['end'] = base64_encode((string) $endIndex);
234235

235236
return [
236237
'cursors' => $cursors,

src/Resolve/ResolveEntityFactory.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ public function buildPagination(
120120
'edges' => $edgesAndCursors['edges'],
121121
'totalCount' => $edgesAndCursors['totalCount'],
122122
'pageInfo' => [
123-
'endCursor' => $edgesAndCursors['cursors']['end'],
123+
'endCursor' => $edgesAndCursors['cursors']['last'],
124124
'startCursor' => $edgesAndCursors['cursors']['start'],
125125
'hasNextPage' => $edgesAndCursors['cursors']['end'] !== $edgesAndCursors['cursors']['last'],
126126
'hasPreviousPage' => $edgesAndCursors['cursors']['first'] !== null
@@ -170,7 +170,8 @@ protected function buildEdgesAndCursors(QueryBuilder $queryBuilder, array $offse
170170
$index++;
171171
}
172172

173-
$cursors['end'] = $cursors['last'] ?? base64_encode((string) 0);
173+
$endIndex = $paginator->count() ? $paginator->count() - 1 : 0;
174+
$cursors['end'] = base64_encode((string) $endIndex);
174175

175176
return [
176177
'cursors' => $cursors,

test/Feature/Type/PageInfoTest.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -66,13 +66,13 @@ public function testPageInfoHasNextPage(): void
6666
'query' => new ObjectType([
6767
'name' => 'query',
6868
'fields' => [
69-
'performance' => $driver->completeConnection(Performance::class),
69+
'performances' => $driver->completeConnection(Performance::class),
7070
],
7171
]),
7272
]);
7373

7474
$query = '{
75-
performance (pagination: { first: 2 }) {
75+
performances (pagination: { first: 2 }) {
7676
pageInfo {
7777
hasNextPage
7878
hasPreviousPage
@@ -88,8 +88,8 @@ public function testPageInfoHasNextPage(): void
8888

8989
$data = $result->toArray()['data'];
9090

91-
$this->assertTrue($data['performance']['pageInfo']['hasNextPage']);
92-
$this->assertFalse($data['performance']['pageInfo']['hasPreviousPage']);
91+
$this->assertTrue($data['performances']['pageInfo']['hasNextPage']);
92+
$this->assertFalse($data['performances']['pageInfo']['hasPreviousPage']);
9393
}
9494

9595
public function testPageInfoHasPreviousPage(): void

0 commit comments

Comments
 (0)