import type { LoaderFunction } from "remix"; import { useLoaderData, useCatch, redirect } from "remix"; import type { Team, User } from "@prisma/client"; import { getUser } from "~/utils/session.server"; import Header from "~/components/Header"; type LoaderData = { user: User & { team: Team & { members: User[]; }; }; }; export const loader: LoaderFunction = async ({ request }) => { const user = await getUser(request); if (!user) { return redirect("/login"); } const data: LoaderData = { user }; return data; }; export default function JokesIndexRoute() { const data = useLoaderData(); return ( <>

Team: {data.user.team.id}

{!data.user.team.members || data.user.team.members?.length === 0 ? (

No members

) : ( data.user.team.members.map((member) => (
{member.icon ?? member.username[0]}

{member.username}

)) )}
); } export function CatchBoundary() { const caught = useCatch(); if (caught.status === 404) { return (
There are no users to display.
); } throw new Error(`Unexpected caught response with status: ${caught.status}`); } export function ErrorBoundary() { return
I did a whoopsies.
; }