mirror of
https://gitlab.com/soapbox-pub/ditto.git
synced 2025-12-06 11:29:46 +00:00
36 lines
1.1 KiB
TypeScript
36 lines
1.1 KiB
TypeScript
import { getFeed, getPublicFeed } from '@/queries.ts';
|
|
import { toStatus } from '@/transformers/nostr-to-mastoapi.ts';
|
|
import { buildLinkHeader, paginationSchema } from '@/utils.ts';
|
|
|
|
import type { AppController } from '@/app.ts';
|
|
|
|
const homeController: AppController = async (c) => {
|
|
const params = paginationSchema.parse(c.req.query());
|
|
const pubkey = c.get('pubkey')!;
|
|
|
|
const events = await getFeed(pubkey, params);
|
|
if (!events.length) {
|
|
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 publicController: AppController = async (c) => {
|
|
const params = paginationSchema.parse(c.req.query());
|
|
|
|
const events = await getPublicFeed(params);
|
|
if (!events.length) {
|
|
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);
|
|
};
|
|
|
|
export { homeController, publicController };
|