import React, { useMemo, useState } from "react"; import { Redirect } from "react-router-dom"; import { TimeOptions } from "../api/entities/time-options"; import { TimePreset } from "../api/entities/time-preset.enum"; import { Track } from "../api/entities/track"; import { useTopTracks } from "../hooks/use-api"; import { useAuth } from "../hooks/use-auth"; import { ReportTimeOptions } from "./ReportTimeOptions"; import { TopListItem } from "./TopListItem"; export const ReportTopTracks: React.FC = () => { const { user } = useAuth(); const [timeOptions, setTimeOptions] = useState({ timePreset: TimePreset.LAST_90_DAYS, customTimeStart: new Date(0), customTimeEnd: new Date(), }); const options = useMemo( () => ({ time: timeOptions, }), [timeOptions] ); const { topTracks, isLoading } = useTopTracks(options); const reportHasItems = !isLoading && topTracks.length !== 0; if (!user) { return ; } return (

Top Tracks

{isLoading && (
)} {!reportHasItems && (

Report is emtpy! :(

)} {reportHasItems && topTracks.map(({ track, count }) => ( ))}
); }; const ReportItem: React.FC<{ track: Track; count: number; }> = ({ track, count }) => { const artists = track.artists?.map((artist) => artist.name).join(", ") || ""; return ( ); };