From 5d6ab9f63ba9efcc6a7f84b535f40499a1b2385b Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Tue, 6 Aug 2024 19:04:27 -0500 Subject: [PATCH] Separate listPagination --- src/app.ts | 6 +++--- src/controllers/api/statuses.ts | 2 +- src/controllers/api/suggestions.ts | 4 ++-- src/middleware/paginationMiddleware.ts | 11 ++++++++++- src/views.ts | 2 +- 5 files changed, 17 insertions(+), 8 deletions(-) diff --git a/src/app.ts b/src/app.ts index 08758503..25b7a232 100644 --- a/src/app.ts +++ b/src/app.ts @@ -4,9 +4,7 @@ import { serveStatic } from '@hono/hono/deno'; import { logger } from '@hono/hono/logger'; import { NostrEvent, NostrSigner, NStore, NUploader } from '@nostrify/nostrify'; import Debug from '@soapbox/stickynotes/debug'; -import { SetRequired } from 'type-fest'; -import { DittoPagination } from '@/interfaces/DittoPagination.ts'; import { Time } from '@/utils/time.ts'; import { @@ -137,7 +135,9 @@ interface AppEnv extends HonoEnv { /** Storage for the user, might filter out unwanted content. */ store: NStore; /** Normalized pagination params. */ - pagination: SetRequired; + pagination: { since?: number; until?: number; limit: number }; + /** Normalized list pagination params. */ + listPagination: { offset: number; limit: number }; }; } diff --git a/src/controllers/api/statuses.ts b/src/controllers/api/statuses.ts index 750f349b..00aa9a31 100644 --- a/src/controllers/api/statuses.ts +++ b/src/controllers/api/statuses.ts @@ -563,7 +563,7 @@ const zapController: AppController = async (c) => { const zappedByController: AppController = async (c) => { const id = c.req.param('id'); - const params = c.get('pagination'); + const params = c.get('listPagination'); const store = await Storages.db(); const db = await DittoDB.getInstance(); diff --git a/src/controllers/api/suggestions.ts b/src/controllers/api/suggestions.ts index 347ec827..c047c415 100644 --- a/src/controllers/api/suggestions.ts +++ b/src/controllers/api/suggestions.ts @@ -10,7 +10,7 @@ import { accountFromPubkey, renderAccount } from '@/views/mastodon/accounts.ts'; export const suggestionsV1Controller: AppController = async (c) => { const signal = c.req.raw.signal; - const params = c.get('pagination'); + const params = c.get('listPagination'); const suggestions = await renderV2Suggestions(c, params, signal); const accounts = suggestions.map(({ account }) => account); return paginatedList(c, params, accounts); @@ -18,7 +18,7 @@ export const suggestionsV1Controller: AppController = async (c) => { export const suggestionsV2Controller: AppController = async (c) => { const signal = c.req.raw.signal; - const params = c.get('pagination'); + const params = c.get('listPagination'); const suggestions = await renderV2Suggestions(c, params, signal); return paginatedList(c, params, suggestions); }; diff --git a/src/middleware/paginationMiddleware.ts b/src/middleware/paginationMiddleware.ts index 6d5227db..b1f1e2f3 100644 --- a/src/middleware/paginationMiddleware.ts +++ b/src/middleware/paginationMiddleware.ts @@ -34,7 +34,16 @@ export const paginationMiddleware: AppMiddleware = async (c, next) => { } } - c.set('pagination', pagination); + c.set('pagination', { + since: pagination.since, + until: pagination.until, + limit: pagination.limit, + }); + + c.set('listPagination', { + limit: pagination.limit, + offset: pagination.offset, + }); await next(); }; diff --git a/src/views.ts b/src/views.ts index 6545ad94..e333eebd 100644 --- a/src/views.ts +++ b/src/views.ts @@ -43,7 +43,7 @@ async function renderEventAccounts(c: AppContext, filters: NostrFilter[], opts?: } async function renderAccounts(c: AppContext, pubkeys: string[]) { - const { offset, limit } = c.get('pagination'); + const { offset, limit } = c.get('listPagination'); const authors = pubkeys.reverse().slice(offset, offset + limit); const store = await Storages.db();