From f6921b7025d29a25b41ab4e3c13e72392e8338ed Mon Sep 17 00:00:00 2001 From: aarbit Date: Fri, 7 Jun 2024 22:56:48 -0500 Subject: [PATCH] Adds support for whole album information consumption. Cleans up track number calculation. --- src/AlbumPlayer.tsx | 42 ++++++++++++++++++------------------------ src/AlbumTrackInfo.ts | 5 +++++ src/App.tsx | 23 +++++++++++++++++++---- src/PhotoContainer.tsx | 4 ++-- 4 files changed, 44 insertions(+), 30 deletions(-) create mode 100644 src/AlbumTrackInfo.ts diff --git a/src/AlbumPlayer.tsx b/src/AlbumPlayer.tsx index 9f54957..6b12ab0 100644 --- a/src/AlbumPlayer.tsx +++ b/src/AlbumPlayer.tsx @@ -1,39 +1,33 @@ -import {useEffect, useState} from "react"; +import {useState} from "react"; import hostName from "./Config.ts"; -import {TrackInfo} from "./TrackInfo.tsx"; +import {AlbumInfo} from "./AlbumInfo.ts"; interface AlbumPlayerProps { - albumHash: string + albumHash: string, + albumInfo: AlbumInfo } export default function AlbumPlayer(props: Readonly) { - const [trackNum, setTrackNum] = useState(1) - const [trackInfo, setTrackInfo] = useState() - - useEffect(() => { - if (props.albumHash) { - let fetched = fetch(`${hostName}/track/${props.albumHash}/${trackNum}`) - fetched.then(response => { - if (response.ok) { - response.json().then(body => { - setTrackInfo(body) - } - ) - } - }) - } - }, [props.albumHash, trackNum]) + const [trackNum, setTrackNum] = useState(0) + const [isAlbumOver, setIsAlbumOver] = useState(false) + let album = props.albumInfo function handleNextTrack() { - setTrackNum(trackNum+1) + if(!isAlbumOver && trackNum+1 === props.albumInfo.trackList.length) { + setIsAlbumOver(true) + } else { + setTrackNum(trackNum+1) + } + } - if(props.albumHash) { + if(props.albumHash && album) { + console.log(album) return (
-
{trackInfo?.artist ?? ""} - {trackInfo?.trackTitle ?? ""}
-
+