PlaylistInfo.jsx 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import React from "react";
  2. import PlaylistsTrack from "../PlaylistsTrack/PlaylistsTrack";
  3. import { useNavigate } from "react-router-dom";
  4. import "./style.scoped.scss";
  5. import PlaylistIcon from "../../assets/playlist_icon_2.svg";
  6. import PlayIcon from "../../assets/play_icon.svg";
  7. import { ROUTES } from "../../utils/constants";
  8. import { useDispatch } from "react-redux";
  9. import { actionSetQueue } from "../../redux/actions/creators/audio";
  10. const PlaylistInfo = ({ playlist }) => {
  11. const navigate = useNavigate();
  12. const dispatch = useDispatch();
  13. const { _id, name, description, tracks } = playlist;
  14. const editClickHandler = () => {
  15. navigate(`${ROUTES.PLAYLISTS}/${_id}`);
  16. };
  17. const playClickHandler = () => {
  18. dispatch(actionSetQueue({ _id, name, tracks: tracks ?? [] }));
  19. };
  20. return (
  21. <div className="playlist-item">
  22. <div className="top">
  23. <div className="cover">
  24. <img
  25. className="playlist-icon"
  26. src={PlaylistIcon}
  27. alt="playlist_icon"
  28. />
  29. <img
  30. className="play-icon"
  31. src={PlayIcon}
  32. alt="play_icon"
  33. onClick={playClickHandler}
  34. />
  35. </div>
  36. <div className="tracks-box">
  37. <div className="tracks">
  38. {tracks?.length
  39. ? tracks.map((track) => (
  40. <PlaylistsTrack
  41. key={track._id}
  42. track={track}
  43. playlistId={_id}
  44. />
  45. ))
  46. : "0 TRACKS"}
  47. </div>
  48. <div className="button-edit" onClick={editClickHandler}>
  49. EDIT
  50. </div>
  51. </div>
  52. </div>
  53. <div className="info">
  54. <p className="name">{name}</p>
  55. <p className="description">{description}</p>
  56. </div>
  57. </div>
  58. );
  59. };
  60. export default PlaylistInfo;