add loading to resource page

This commit is contained in:
Brandon Egger 2023-08-29 09:43:39 -05:00
parent 1566be88f6
commit b972b860ac

View File

@ -2,13 +2,14 @@ import { GlobeAltIcon, DocumentIcon } from "@heroicons/react/24/solid";
import { PencilSquareIcon } from "@heroicons/react/20/solid"; import { PencilSquareIcon } from "@heroicons/react/20/solid";
import { api } from "~/utils/api"; import { api } from "~/utils/api";
import { ResourceDescription, ResourceInfo } from "~/components/ResourceTable"; import { ResourceDescription, ResourceInfo } from "~/components/ResourceTable";
import { type PlatformLink } from "@prisma/client"; import { type AuditoryResource, type PlatformLink } from "@prisma/client";
import Image from "next/image"; import Image from "next/image";
import Link from "next/link"; import Link from "next/link";
import { AdminBarLayout } from "~/components/admin/ControlBar"; import { AdminBarLayout } from "~/components/admin/ControlBar";
import { AdminActionLink } from "~/components/admin/common"; import { AdminActionLink } from "~/components/admin/common";
import { useRouter } from "next/router"; import { useRouter } from "next/router";
import { HeaderFooterLayout } from "~/layouts/HeaderFooterLayout"; import { HeaderFooterLayout } from "~/layouts/HeaderFooterLayout";
import { QueryWaitWrapper } from "~/components/LoadingWrapper";
export const PlatformLinkButton = ({ export const PlatformLinkButton = ({
platformLink, platformLink,
@ -83,35 +84,27 @@ const ResourceViewPage = () => {
const resourceQuery = api.auditoryResource.byId.useQuery({ id }); const resourceQuery = api.auditoryResource.byId.useQuery({ id });
const ConditionalView = () => { const ConditionalView = (data: AuditoryResource) => {
if (!resourceQuery.data) {
return <></>;
}
return ( return (
<div className="mx-auto flex max-w-2xl flex-col flex-col-reverse divide-x py-4 sm:flex-row"> <div className="mx-auto flex max-w-2xl flex-col flex-col-reverse divide-x py-4 sm:flex-row">
<div className="my-5 mr-4 flex flex-col justify-end text-lg font-bold"> <div className="my-5 mr-4 flex flex-col justify-end text-lg font-bold">
<div className="mx-4"> <div className="mx-4">
<h1 className="mb-2 border-b border-neutral-400">Links</h1> <h1 className="mb-2 border-b border-neutral-400">Links</h1>
<DownloadButtons <DownloadButtons platformLinks={data.platform_links} />
platformLinks={resourceQuery.data.platform_links}
/>
</div> </div>
</div> </div>
<div className="justify-left flex flex-col pb-5"> <div className="justify-left flex flex-col pb-5">
<ResourceInfo resource={resourceQuery.data} /> <ResourceInfo resource={data} />
<div className="mx-4 overflow-hidden rounded-xl border border-neutral-400 bg-neutral-200 text-left shadow"> <div className="mx-4 overflow-hidden rounded-xl border border-neutral-400 bg-neutral-200 text-left shadow">
<ResourceDescription <ResourceDescription
manufacturer={resourceQuery.data.manufacturer} manufacturer={data.manufacturer}
description={resourceQuery.data.description} description={data.description}
/> />
</div> </div>
<div className="ml-4 mr-auto mt-4 rounded-lg border-2 border-neutral-900 bg-neutral-600"> <div className="ml-4 mr-auto mt-4 rounded-lg border-2 border-neutral-900 bg-neutral-600">
<span className="px-2 py-2 text-sm text-neutral-200"> <span className="px-2 py-2 text-sm text-neutral-200">
Ages {resourceQuery.data.ages.min} Ages {data.ages.min}
{resourceQuery.data.ages.max >= 100 {data.ages.max >= 100 ? "+" : `-${data.ages.max}`}
? "+"
: `-${resourceQuery.data.ages.max}`}
</span> </span>
</div> </div>
</div> </div>
@ -131,7 +124,7 @@ const ResourceViewPage = () => {
} }
> >
<div className="mb-12"> <div className="mb-12">
<ConditionalView /> <QueryWaitWrapper query={resourceQuery} Render={ConditionalView} />
</div> </div>
</AdminBarLayout> </AdminBarLayout>
</HeaderFooterLayout> </HeaderFooterLayout>