import { type InferGetStaticPropsType, type GetStaticPropsContext } from "next"; import { GlobeAltIcon, DocumentIcon } from '@heroicons/react/24/solid'; import { createProxySSGHelpers } from '@trpc/react-query/ssg'; import { appRouter } from "~/server/api/root"; import { prisma } from "~/server/db"; import { api } from "~/utils/api"; import { ResourceInfo } from "~/components/ResourceTable"; import { type PlatformLink } from "@prisma/client"; import Image from 'next/image'; import Link from "next/link"; export const getStaticPaths = async () => { const resources = (await prisma.auditoryResource.findMany({ select: { id: true, } })); return { paths: resources.map((resource) => ({ params: { id: resource.id, } })), fallback: 'blocking', } }; export async function getStaticProps( context: GetStaticPropsContext<{ id: string }>, ) { const ssg = createProxySSGHelpers({ router: appRouter, ctx: { prisma, session: null, }, }); const id = context.params?.id as string; await ssg.auditoryResource.byId.prefetch({id}); return { props: { trpcState: ssg.dehydrate(), id, }, revalidate: 1, }; } const PlatformLinkButton = ({platformLink}: {platformLink: PlatformLink}) => { const Inner = () => { switch (platformLink.platform) { case "APP_ANDROID": { return ( {`Download ) } case "APP_IOS": { return ( {`Download ) } case "PDF": { return (
Document
) } case "WEBSITE": { return (
Website
) } } } return ( ) } const DownloadButtons = ({platformLinks}: {platformLinks: PlatformLink[]}) => { const buttons = platformLinks.map((paltformLink, index) => { return ( ) }); return (
{buttons}
) } const ResourceViewPage = (props: InferGetStaticPropsType) => { const { id } = props; const resourceQuery = api.auditoryResource.byId.useQuery({ id }); if (!resourceQuery.data) { return <> } return <>

Links

{resourceQuery.data.description}

Ages {resourceQuery.data.ages.min}{resourceQuery.data.ages.max >= 100 ? "+" : `-${resourceQuery.data.ages.max}`}
}; export default ResourceViewPage