import { LoaderFunctionArgs, useLoaderData } from "react-router-dom"; import { createDMsPageURL } from "#lib/urls"; import { parseOffset } from "#lib/pagination"; import { fetchDMs } from "#api/dms"; import { PageSkeleton } from "#components/pages"; import { HeaderAd, SliderAd } from "#components/ads"; import { Paginator } from "#components/pagination"; import { CardList, DMCard } from "#components/cards"; import { FormRouter } from "#components/forms"; import { IApprovedDM } from "#entities/dms"; interface IProps { query?: string; count: number; offset?: number; dms: IApprovedDM[]; } export function DMsPage() { const { query, count, dms, offset } = useLoaderData() as IProps; const title = "DMs"; const heading = "DMs"; return (
String(createDMsPageURL(offset, query))} />
{count === 0 ? (

Nobody here but us chickens!

There are no DMs.

) : ( dms.map((dm) => ( )) )}
String(createDMsPageURL(offset, query))} />
); } export async function loader({ request }: LoaderFunctionArgs): Promise { const searchParams = new URL(request.url).searchParams; let offset: number | undefined = undefined; { const inputOffset = searchParams.get("o")?.trim(); if (inputOffset) { offset = parseOffset(inputOffset); } } const query = searchParams.get("q")?.trim(); const { props } = await fetchDMs(offset, query); const { count, dms } = props; return { count, offset, query, dms, }; }