mirror of
https://github.com/aljazceru/ditto.git
synced 2026-01-06 23:24:22 +01:00
Add paginated helper function, DRY pagination code
This commit is contained in:
@@ -6,7 +6,7 @@ import { booleanParamSchema } from '@/schema.ts';
|
||||
import { jsonMetaContentSchema } from '@/schemas/nostr.ts';
|
||||
import { toAccount, toRelationship, toStatus } from '@/transformers/nostr-to-mastoapi.ts';
|
||||
import { eventDateComparator, isFollowing, lookupAccount } from '@/utils.ts';
|
||||
import { buildLinkHeader, paginationSchema, parseBody } from '@/utils/web.ts';
|
||||
import { paginated, paginationSchema, parseBody } from '@/utils/web.ts';
|
||||
import { createEvent } from '@/utils/web.ts';
|
||||
|
||||
const createAccountController: AppController = (c) => {
|
||||
@@ -110,9 +110,7 @@ const accountStatusesController: AppController = async (c) => {
|
||||
}
|
||||
|
||||
const statuses = await Promise.all(events.map(toStatus));
|
||||
|
||||
const link = buildLinkHeader(c.req.url, events);
|
||||
return c.json(statuses, 200, link ? { link } : undefined);
|
||||
return paginated(c, events, statuses);
|
||||
};
|
||||
|
||||
const fileSchema = z.custom<File>((value) => value instanceof File);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { type AppController } from '@/app.ts';
|
||||
import * as mixer from '@/mixer.ts';
|
||||
import { buildLinkHeader, paginationSchema } from '@/utils/web.ts';
|
||||
import { paginated, paginationSchema } from '@/utils/web.ts';
|
||||
import { toNotification } from '@/transformers/nostr-to-mastoapi.ts';
|
||||
import { Time } from '@/utils.ts';
|
||||
|
||||
@@ -14,9 +14,7 @@ const notificationsController: AppController = async (c) => {
|
||||
);
|
||||
|
||||
const statuses = await Promise.all(events.map(toNotification));
|
||||
|
||||
const link = buildLinkHeader(c.req.url, events);
|
||||
return c.json(statuses, 200, link ? { link } : undefined);
|
||||
return paginated(c, events, statuses);
|
||||
};
|
||||
|
||||
export { notificationsController };
|
||||
|
||||
@@ -3,7 +3,7 @@ import * as mixer from '@/mixer.ts';
|
||||
import { getFeed, getPublicFeed } from '@/queries.ts';
|
||||
import { booleanParamSchema } from '@/schema.ts';
|
||||
import { toStatus } from '@/transformers/nostr-to-mastoapi.ts';
|
||||
import { buildLinkHeader, paginationSchema } from '@/utils/web.ts';
|
||||
import { paginated, paginationSchema } from '@/utils/web.ts';
|
||||
import { Time } from '@/utils.ts';
|
||||
|
||||
import type { AppController } from '@/app.ts';
|
||||
@@ -17,10 +17,8 @@ const homeTimelineController: AppController = async (c) => {
|
||||
return c.json([]);
|
||||
}
|
||||
|
||||
const statuses = (await Promise.all(events.map(toStatus))).filter(Boolean);
|
||||
|
||||
const link = buildLinkHeader(c.req.url, events);
|
||||
return c.json(statuses, 200, link ? { link } : undefined);
|
||||
const statuses = await Promise.all(events.map(toStatus));
|
||||
return paginated(c, events, statuses);
|
||||
};
|
||||
|
||||
const publicQuerySchema = z.object({
|
||||
@@ -36,10 +34,8 @@ const publicTimelineController: AppController = async (c) => {
|
||||
return c.json([]);
|
||||
}
|
||||
|
||||
const statuses = (await Promise.all(events.map(toStatus))).filter(Boolean);
|
||||
|
||||
const link = buildLinkHeader(c.req.url, events);
|
||||
return c.json(statuses, 200, link ? { link } : undefined);
|
||||
const statuses = await Promise.all(events.map(toStatus));
|
||||
return paginated(c, events, statuses);
|
||||
};
|
||||
|
||||
const hashtagTimelineController: AppController = async (c) => {
|
||||
@@ -55,10 +51,8 @@ const hashtagTimelineController: AppController = async (c) => {
|
||||
return c.json([]);
|
||||
}
|
||||
|
||||
const statuses = (await Promise.all(events.map(toStatus))).filter(Boolean);
|
||||
|
||||
const link = buildLinkHeader(c.req.url, events);
|
||||
return c.json(statuses, 200, link ? { link } : undefined);
|
||||
const statuses = await Promise.all(events.map(toStatus));
|
||||
return paginated(c, events, statuses);
|
||||
};
|
||||
|
||||
export { hashtagTimelineController, homeTimelineController, publicTimelineController };
|
||||
|
||||
Reference in New Issue
Block a user