import TopItemList from "~/components/TopItemList"; import ChartLayout from "./ChartLayout"; import { useLoaderData, type LoaderFunctionArgs } from "react-router"; import { type Album, type PaginatedResponse } from "api/api"; export async function clientLoader({ request }: LoaderFunctionArgs) { const url = new URL(request.url); const page = url.searchParams.get("page") || "0"; url.searchParams.set('page', page) const res = await fetch( `/apis/web/v1/top-tracks?${url.searchParams.toString()}` ); if (!res.ok) { throw new Response("Failed to load top tracks", { status: 500 }); } const top_tracks: PaginatedResponse = await res.json(); return { top_tracks }; } export default function TrackChart() { const { top_tracks: initialData } = useLoaderData<{ top_tracks: PaginatedResponse }>(); return ( (
)} /> ); }