import { useEffect, useState, Fragment, useContext } from "react"; import youtubePlayer from "youtube-player"; import AppContext from "../context/app"; import Controls, { ENDED, PAUSED } from "./controls"; let player; const Player = ({ hidden }) => { const [playerState, setPlayerState] = useState(-1); const { openSong: { id, startSeconds = 0, endSeconds = 0 } } = useContext(AppContext); const onPause = () => player && player.pauseVideo(); const onPlay = () => player && player.playVideo(); const onRestart = () => { player && player.seekTo(hidden ? startSeconds : 0); player && [PAUSED, ENDED].includes(playerState) && player.playVideo(); }; useEffect(onRestart, [!hidden]); useEffect(() => { const setState = ({ data }) => setPlayerState(data); player = youtubePlayer("player", { height: "390", width: "640" }); player.on("stateChange", setState); player.loadVideoById({ videoId: id, startSeconds: hidden ? startSeconds : 0, endSeconds: hidden ? endSeconds : undefined, }); return () => { player = null; setPlayerState(null); }; }, []); return (
{hidden && playerState === -1 && Titel laden...} {hidden && playerState > -1 && ( {' '} Titel spielt )} ); }; export default Player;