import { LoaderFunctionArgs, useLoaderData } from "react-router"; import { Helmet } from "@dr.pogodin/react-helmet"; import { ICONS_PREPEND, KEMONO_SITE, SITE_NAME, THUMBNAILS_PREPEND, } from "#env/env-vars"; import { fetchFanboxProfileFancards } from "#api/profiles"; import { PageSkeleton } from "#components/pages"; import { validatePaysite } from "#entities/paysites"; import { ProfileHeader, Tabs, IArtistDetails, getArtist, } from "#entities/profiles"; import { IFanCard } from "#entities/files"; interface IProps { profile: IArtistDetails; cards: IFanCard[]; } export function FancardsPage() { const { profile, cards } = useLoaderData() as IProps; const title = "Fancards"; const heading = "Fancards"; return ( {/* */} {/* */} {cards.length === 0 ? ( Nobody here but us chickens! There are no uploads for your query. ) : ( cards.map((card) => ( Added {card.added.slice(0, 7)} )) )} ); } export async function loader({ params }: LoaderFunctionArgs): Promise { const service = params.service?.trim(); { if (!service) { throw new Error("Service name is required."); } validatePaysite(service); if (service !== "fanbox") { throw new Error(`Service must be "fanbox".`); } } const profileID = params.creator_id?.trim(); { if (!profileID) { throw new Error("Artist ID is required."); } } const profile = await getArtist(service, profileID); const cards = await fetchFanboxProfileFancards(profileID); return { profile, cards, }; }
There are no uploads for your query.