import { useState } from "react"; import { useLoaderData, type LoaderFunctionArgs } from "react-router"; import TopTracks from "~/components/TopTracks"; import { mergeAlbums, type Album } from "api/api"; import LastPlays from "~/components/LastPlays"; import PeriodSelector from "~/components/PeriodSelector"; import MediaLayout from "./MediaLayout"; import ActivityGrid from "~/components/ActivityGrid"; import { timeListenedString } from "~/utils/utils"; export async function clientLoader({ params }: LoaderFunctionArgs) { const res = await fetch(`/apis/web/v1/album?id=${params.id}`); if (!res.ok) { throw new Response("Failed to load album", { status: 500 }); } const album: Album = await res.json(); return album; } export default function Album() { const album = useLoaderData() as Album; const [period, setPeriod] = useState('week') console.log(album) return ( { r.artists = [] r.tracks = [] for (let i = 0; i < r.albums.length; i ++) { if (r.albums[i].id === id) { delete r.albums[i] } } return r }} subContent={
{album.listen_count &&

{album.listen_count} play{ album.listen_count > 1 ? 's' : ''}

} {

{timeListenedString(album.time_listened)}

} {

Listening since {new Date(album.first_listen * 1000).toLocaleDateString()}

}
} >
); }