import { useState, useEffect } from "react"; type MusicObject = { artist: { mbid: string; "#text": string; }; name: string; image: ImageObject[]; url: string; }; type ImageObject = { size: "small" | "medium" | "large" | "extralarge"; "#text": string; }; export default function MusicComponent() { const [music, setMusic] = useState(null); const [failedFetch, setFailedFetch] = useState(false); useEffect(() => { async function fetchMusic() { const response = await fetch("https://api.alexav.gg/v4/social/music"); if (response.ok) { const data = await response.json(); setMusic(data.data.tracks[0] as MusicObject); } else setFailedFetch(true); } setTimeout(() => { fetchMusic(); }, 60000); fetchMusic(); }, []); if (music) { return (

{music.name}

{music.artist["#text"]}

); } else { if (failedFetch) { return (

uh oh!

failed to get music :(

); } else { return (

loading music..

loading artist..

); } } }