From 6d3d7b74a04dfb37a7fc8693448044b12109ac76 Mon Sep 17 00:00:00 2001 From: Esteban Borai Date: Fri, 28 Oct 2022 02:10:55 -0300 Subject: [PATCH] fix: use new endpoint for crate owner invites --- app/components/seek-pagination.hbs | 7 +++++++ app/components/seek-pagination.module.css | 5 +++++ app/controllers/me/pending-invites.js | 10 ++++++++++ app/routes/me/pending-invites.js | 8 ++++++-- app/templates/me/pending-invites.hbs | 2 ++ app/utils/seek-pagination.js | 12 ++++++++++++ mirage/route-handlers/me.js | 11 +++++++++-- 7 files changed, 51 insertions(+), 4 deletions(-) create mode 100644 app/components/seek-pagination.hbs create mode 100644 app/components/seek-pagination.module.css create mode 100644 app/controllers/me/pending-invites.js create mode 100644 app/utils/seek-pagination.js diff --git a/app/components/seek-pagination.hbs b/app/components/seek-pagination.hbs new file mode 100644 index 00000000000..4ae6e0a1650 --- /dev/null +++ b/app/components/seek-pagination.hbs @@ -0,0 +1,7 @@ +{{#if @pagination.nextPage}} + +{{/if}} diff --git a/app/components/seek-pagination.module.css b/app/components/seek-pagination.module.css new file mode 100644 index 00000000000..363eb1e1a4e --- /dev/null +++ b/app/components/seek-pagination.module.css @@ -0,0 +1,5 @@ +.seek-pagination { + text-align: center; + font-size: 90%; + margin-bottom: 20px; +} diff --git a/app/controllers/me/pending-invites.js b/app/controllers/me/pending-invites.js new file mode 100644 index 00000000000..19efd238c7d --- /dev/null +++ b/app/controllers/me/pending-invites.js @@ -0,0 +1,10 @@ +import Controller from '@ember/controller'; + +import { reads } from 'macro-decorators'; + +import { pagination } from '../../utils/seek-pagination'; + +export default class PendingInvitesController extends Controller { + @reads('model.meta.next_page') nextPage; + @pagination() pagination; +} diff --git a/app/routes/me/pending-invites.js b/app/routes/me/pending-invites.js index af51d27432c..1cb57350c0d 100644 --- a/app/routes/me/pending-invites.js +++ b/app/routes/me/pending-invites.js @@ -5,7 +5,11 @@ import AuthenticatedRoute from '../-authenticated-route'; export default class PendingInvitesRoute extends AuthenticatedRoute { @service store; - model() { - return this.store.findAll('crate-owner-invite'); + queryParams = { + seek: { refreshModel: true }, + }; + + model(params) { + return this.store.query('crate-owner-invite', params); } } diff --git a/app/templates/me/pending-invites.hbs b/app/templates/me/pending-invites.hbs index 7fcd2d84d50..b1c9c762841 100644 --- a/app/templates/me/pending-invites.hbs +++ b/app/templates/me/pending-invites.hbs @@ -9,3 +9,5 @@

You don't seem to have any pending invitations.

{{/each}} + + diff --git a/app/utils/seek-pagination.js b/app/utils/seek-pagination.js new file mode 100644 index 00000000000..23423dcccba --- /dev/null +++ b/app/utils/seek-pagination.js @@ -0,0 +1,12 @@ +import macro from 'macro-decorators'; + +export function pagination() { + return macro(function () { + const { nextPage } = this; + const nextPageParams = new URLSearchParams(nextPage); + + return { + nextPage: nextPageParams.get('seek'), + }; + }); +} diff --git a/mirage/route-handlers/me.js b/mirage/route-handlers/me.js index 2f130022034..7906c55f41c 100644 --- a/mirage/route-handlers/me.js +++ b/mirage/route-handlers/me.js @@ -98,13 +98,20 @@ export function register(server) { return { ok: true }; }); - server.get('/api/v1/me/crate_owner_invitations', function (schema) { + server.get('/api/private/crate_owner_invitations', function (schema, request) { let { user } = getSession(schema); if (!user) { return new Response(403, {}, { errors: [{ detail: 'must be logged in to perform that action' }] }); } - return schema.crateOwnerInvitations.where({ inviteeId: user.id }); + const { start, end } = pageParams(request); + const invites = schema.crateOwnerInvitations.where({ inviteeId: user.id }); + + let response = this.serialize(invites.slice(start, end)); + + response.meta = { total: invites.length }; + + return response; }); server.put('/api/v1/me/crate_owner_invitations/:crate_id', (schema, request) => {