Skip to content

Commit 80db2b4

Browse files
committed
feat: provide a seek pagination component
1 parent 95f9b64 commit 80db2b4

File tree

8 files changed

+35
-32
lines changed

8 files changed

+35
-32
lines changed

app/components/seek-pagination.hbs

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{{#if @pagination.nextPage}}
2+
<nav local-class='seek-pagination' aria-label="Pagination navigation">
3+
<LinkTo @query={{hash seek=@pagination.nextPage}} local-class="next" rel="next" title="Goes to next page" data-test-pagination-next>
4+
Next Page
5+
</LinkTo>
6+
</nav>
7+
{{/if}}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
.seek-pagination {
2+
text-align: center;
3+
font-size: 90%;
4+
margin-bottom: 20px;
5+
}

app/controllers/me/pending-invites.js

+2-6
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,10 @@
11
import Controller from '@ember/controller';
2-
import { tracked } from '@glimmer/tracking';
32

43
import { reads } from 'macro-decorators';
54

6-
import { pagination } from '../../utils/seek';
5+
import { pagination } from '../../utils/seek-pagination';
76

87
export default class PendingInvitesController extends Controller {
9-
queryParams = ['seek'];
10-
@tracked seek = 'WzEsIDFd';
11-
12-
@reads('model.meta.total') totalItems;
8+
@reads('model.meta.next_page') nextPage;
139
@pagination() pagination;
1410
}

app/routes/me/pending-invites.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ export default class PendingInvitesRoute extends AuthenticatedRoute {
66
@service store;
77

88
queryParams = {
9-
page: { refreshModel: true },
9+
seek: { refreshModel: true },
1010
};
1111

1212
model(params) {

app/templates/me/pending-invites.hbs

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,4 @@
1010
{{/each}}
1111
</div>
1212

13-
<Pagination @pagination={{this.pagination}} />
13+
<SeekPagination @pagination={{this.pagination}} />

app/utils/seek-pagination.js

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import macro from 'macro-decorators';
2+
3+
export function pagination() {
4+
return macro(function () {
5+
let { nextPage, totalItems } = this;
6+
7+
return {
8+
nextPage,
9+
totalItems,
10+
};
11+
});
12+
}

app/utils/seek.js

-15
This file was deleted.

src/controllers/crate_owner_invitation.rs

+7-9
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,7 @@ fn prepare_list(
136136
Page::Unspecified => query.load(&*conn)?,
137137
Page::Seek(s) => {
138138
let seek_key: (i32, i32) = s.decode()?;
139+
println!("{} {}", seek_key.0, seek_key.1);
139140
query
140141
.filter(
141142
crate_owner_invitations::crate_id.gt(seek_key.0).or(
@@ -154,15 +155,12 @@ fn prepare_list(
154155
raw_invitations.pop();
155156

156157
if let Some(last) = raw_invitations.last() {
157-
let mut params = IndexMap::new();
158-
params.insert(
159-
"seek".into(),
160-
crate::controllers::helpers::pagination::encode_seek((
161-
last.crate_id,
162-
last.invited_user_id,
163-
))?,
164-
);
165-
Some(req.query_with_params(params))
158+
let seek_key = crate::controllers::helpers::pagination::encode_seek((
159+
last.crate_id,
160+
last.invited_user_id,
161+
))?;
162+
163+
Some(seek_key)
166164
} else {
167165
None
168166
}

0 commit comments

Comments
 (0)