Separate listPagination

This commit is contained in:
Alex Gleason 2024-08-06 19:04:27 -05:00
parent d285b7dced
commit 5d6ab9f63b
No known key found for this signature in database
GPG key ID: 7211D1F99744FBB7
5 changed files with 17 additions and 8 deletions

View file

@ -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<DittoPagination, 'limit' | 'offset'>;
pagination: { since?: number; until?: number; limit: number };
/** Normalized list pagination params. */
listPagination: { offset: number; limit: number };
};
}

View file

@ -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();

View file

@ -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);
};

View file

@ -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();
};

View file

@ -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();