import { LoaderFunctionArgs, useLoaderData } from "react-router"; import { Helmet } from "@dr.pogodin/react-helmet"; import { ICONS_PREPEND, KEMONO_SITE, SITE_NAME } from "#env/env-vars"; import { fetchProfileDMs } from "#api/dms"; import { PageSkeleton } from "#components/pages"; import { CardList, DMCard } from "#components/cards"; import { ProfileHeader, Tabs, IArtist } from "#entities/profiles"; import { paysites, validatePaysite } from "#entities/paysites"; import { IApprovedDM } from "#entities/dms"; interface IProps { profile: IArtist; service: string; dmCount: number; dms: IApprovedDM[]; } export function ProfileDMsPage() { const { profile, service, dmCount, dms } = useLoaderData() as IProps; const paysite = paysites[service]; const title = `DMs of "${profile.name}" (${profile.id}) from ${paysite.title}`; const heading = "DMs"; return ( {/* */} {/* */} {dmCount === 0 ? ( Nobody here but us chickens! There are no DMs for your query. ) : ( dms.map((dm) => ) )} ); } export async function loader({ params }: LoaderFunctionArgs): Promise { const service = params.service?.trim(); { if (!service) { throw new Error("Service name is required."); } validatePaysite(service); } const profileID = params.creator_id?.trim(); { if (!profileID) { throw new Error("Artist ID is required."); } } const { props } = await fetchProfileDMs(service, profileID); const { artist, dm_count, dms } = props; return { profile: artist, service, dmCount: dm_count, dms, }; }
There are no DMs for your query.