import { useEffect } from "react"; import { Link, useSearchParams } from "react-router"; import { toast } from "sonner"; import { getAuth } from "@clerk/react-router/server"; import type { Route } from "./+types/home"; import { findLeaguesWithActiveSeasonsByUserId } from "~/models/league"; import { findSeasonById } from "~/models/season"; import { Button } from "~/components/ui/button"; import { Card, CardContent, CardDescription, CardHeader, CardTitle, } from "~/components/ui/card"; export function meta() { return [ { title: "Brackt - Fantasy All of the Sports!" }, { name: "description", content: "Play multi-sport fantasy leagues with your friends!", }, ]; } export async function loader(args: Route.LoaderArgs) { const { userId } = await getAuth(args); if (!userId) { return { leagues: [], isLoggedIn: false }; } // Fetch leagues where user has a team in the current season const leagues = await findLeaguesWithActiveSeasonsByUserId(userId); // Fetch season details for each league's current season const leaguesWithSeasons = await Promise.all( leagues.map(async (league) => { const season = league.currentSeasonId ? await findSeasonById(league.currentSeasonId) : null; return { ...league, currentSeason: season, }; }) ); return { leagues: leaguesWithSeasons, isLoggedIn: true, }; } export default function Home({ loaderData }: Route.ComponentProps) { const { leagues, isLoggedIn } = loaderData; const [searchParams, setSearchParams] = useSearchParams(); useEffect(() => { if (searchParams.get("deleted") === "true") { toast.success("League deleted successfully"); setSearchParams({}); } if (searchParams.get("left") === "true") { toast.success("You have left the league. Your team is now available."); setSearchParams({}); } }, [searchParams, setSearchParams]); if (!isLoggedIn) { return (

Welcome to Brackt

Please sign in to view your leagues

); } return (

My Leagues

{leagues.length === 0 ? ( No Leagues You aren't a member of any leagues yet ) : (
{leagues.map((league) => ( {league.name} Created {new Date(league.createdAt).toLocaleDateString()} {league.currentSeason ? (

Current Season

{league.currentSeason.year}

Status

{league.currentSeason.status.replace("_", " ")}

) : (

No active season

)}
))}
)}
); }