import { createContext } from "react"; import { TrackInfo } from "@repo/utils/lastftm"; import { useLastfmViewer } from "./useLastfmViewer"; import TrackProgressBar from "./TrackProgressBar/TrackProgressBar"; import PastTracks from "./PastTracks/PastTracks"; import ErrorView from "./ErrorView/ErrorView"; import CardFooter from "./CardFooter/CardFooter"; import LoadingSkeleton from "./LoadingSkeleton/LoadingSkeleton"; import { FaRegUser, FaCompactDisc } from "react-icons/fa"; import styles from "@repo/ui/LastFMViewer.module.css"; import disc from "./disc.svg"; import "@repo/ui"; export interface Colors { primary: string | undefined; secondary: string | undefined; accent: string | undefined; } export interface Props { api_key: string; user: string; updateInterval?: number; } export const lfmContext = createContext<{ colors: Colors | undefined; track: TrackInfo | Error | undefined; loading: boolean; }>({ colors: { primary: "white", secondary: "black", accent: "#aaa" }, track: { trackName: "", artistName: "", albumTitle: "", MBImages: [], lastfmImages: [], nowplaying: false, pastTracks: [], duration: 0 }, loading: true }); const ReactLastFMViewer = ({ api_key, user, updateInterval }: Props) => { const { track, colors, loading, message } = useLastfmViewer({ api_key, user, updateInterval }); return ( <> {/* preconnects */} {/* preconnects */}
{track instanceof Error ? ( ) : ( <>
{track?.lastfmImages && track?.lastfmImages[3]["#text"] ? ( Album Cover ) : track?.MBImages ? ( Album Cover ) : ( } > {null} )}
{track?.nowplaying && }

{track?.artistName && ( {track?.trackName} )}

{track?.artistName && ( {track?.artistName} )} {track?.albumTitle && ( {track?.albumTitle} )}
)}
); }; export default ReactLastFMViewer;