MCPcopy Index your code
hub / github.com/WebDevSimplified/spotify-clone / Dashboard

Function Dashboard

client/src/Dashboard.js:13–103  ·  view source on GitHub ↗
({ code })

Source from the content-addressed store, hash-verified

11})
12
13export default function Dashboard({ code }) {
14 const accessToken = useAuth(code)
15 const [search, setSearch] = useState("")
16 const [searchResults, setSearchResults] = useState([])
17 const [playingTrack, setPlayingTrack] = useState()
18 const [lyrics, setLyrics] = useState("")
19
20 function chooseTrack(track) {
21 setPlayingTrack(track)
22 setSearch("")
23 setLyrics("")
24 }
25
26 useEffect(() => {
27 if (!playingTrack) return
28
29 axios
30 .get("http://localhost:3001/lyrics", {
31 params: {
32 track: playingTrack.title,
33 artist: playingTrack.artist,
34 },
35 })
36 .then(res => {
37 setLyrics(res.data.lyrics)
38 })
39 }, [playingTrack])
40
41 useEffect(() => {
42 if (!accessToken) return
43 spotifyApi.setAccessToken(accessToken)
44 }, [accessToken])
45
46 useEffect(() => {
47 if (!search) return setSearchResults([])
48 if (!accessToken) return
49
50 let cancel = false
51 spotifyApi.searchTracks(search).then(res => {
52 if (cancel) return
53 setSearchResults(
54 res.body.tracks.items.map(track => {
55 const smallestAlbumImage = track.album.images.reduce(
56 (smallest, image) => {
57 if (image.height < smallest.height) return image
58 return smallest
59 },
60 track.album.images[0]
61 )
62
63 return {
64 artist: track.artists[0].name,
65 title: track.name,
66 uri: track.uri,
67 albumUrl: smallestAlbumImage.url,
68 }
69 })
70 )

Callers

nothing calls this directly

Calls 1

useAuthFunction · 0.85

Tested by

no test coverage detected