player.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import play from '../play.svg'
  2. import pause from '../pause.svg'
  3. import next from '../next.svg'
  4. import prev from '../prev.svg'
  5. import {connect} from "react-redux";
  6. import {actionTrackPlay, actionTrackStop,actionTrackVolume,actionTrackCurrentTime,actionNextTrack,actionPreviousTrack} from "../reducers";
  7. export const Player = ({player:{volume,duration,currentTime,isPlaying,track:{originalFileName}},
  8. trackPlay, trackStop,trackVolume,trackCurrentTime,trackNext,trackPrevious}) => {
  9. let minutes = Math.floor(duration / 60);
  10. let seconds = Math.floor(parseInt((duration % 60) * 100) / 100);
  11. let minutesLeft = Math.floor(currentTime / 60);
  12. let secondsLeft = Math.floor(parseInt((currentTime % 60) * 100) / 100);
  13. return (
  14. <div className='Player'>
  15. <span>{minutesLeft}:{secondsLeft < 10?"0"+secondsLeft : secondsLeft}</span>
  16. <input className='currentTime'
  17. type="range"
  18. min={0}
  19. step={0.1}
  20. max={duration ? duration : `${duration}`}
  21. onChange={(e) => trackCurrentTime(e.target.value)}
  22. value={currentTime}/>
  23. <span>{minutes}:{seconds < 10?"0"+seconds : seconds}</span>
  24. <button onClick={() => trackPrevious()}><img src={prev} alt='prev'/></button>
  25. {!isPlaying ? ( <button onClick={() => trackPlay()}>
  26. <img src={play} alt='play'/></button>) : ( <button onClick={() => trackStop()}>
  27. <img src={pause} alt='pause'/></button>)}
  28. <button onClick={()=>trackNext()}><img src={next} alt='next'/></button>
  29. <input
  30. type="range"
  31. min={0}
  32. step={0.1}
  33. max={1}
  34. onChange={(e) => trackVolume(e.target.value)}
  35. value={volume}/>
  36. <h3>{originalFileName}</h3>
  37. </div>
  38. )
  39. }
  40. export const CPlayer = connect(state => ({player: state.player}),
  41. {trackPlay: actionTrackPlay,
  42. trackStop: actionTrackStop,
  43. trackVolume:actionTrackVolume,
  44. trackCurrentTime:actionTrackCurrentTime,
  45. trackNext:actionNextTrack,
  46. trackPrevious:actionPreviousTrack,})(Player)