|
@@ -1,17 +1,28 @@
|
|
|
+// Повестка дня: как листать треки в плейлисте?
|
|
|
+// общее у всех это id,йлиста свой. arr принимает значение одного плейлиста в один такт(шаг программы)
|
|
|
+// так вот, пдопустим, моджно ли листать кнопками треки ориентируясь на id плейлиста: если есть треки, то
|
|
|
+// листай, если нет, то кнопка задисейблена. И как это реализовать так, что бы треки листалисть в рамках одного плейлиста., когда мы кликаем по нему(плейлисту0)
|
|
|
+// выпадают треки, а значит что типа по клику мы формируем массив из треков плейлиста, а затем его передаем в player
|
|
|
+
|
|
|
import React, { useState, useEffect } from "react";
|
|
|
+
|
|
|
+// import { Track } from "./Track";
|
|
|
+import { PlaylistTracks,
|
|
|
+ playlistsItemTrack
|
|
|
+ // playlistFilteredTracks
|
|
|
+} from "./Tracks";
|
|
|
import {
|
|
|
getPlaylist,
|
|
|
- setTrack,
|
|
|
+ // setTrack,
|
|
|
setCurrentTrack,
|
|
|
- oneTrackFind,
|
|
|
- actionSetTrack,
|
|
|
+ // oneTrackFind,
|
|
|
+ // actionSetTrack,
|
|
|
} from "../actions/playerActions";
|
|
|
-// import { getPlaylist } from "../actions/playerActions";
|
|
|
import { connect } from "react-redux";
|
|
|
-import * as actions from "../constants/actions/index";
|
|
|
+// import * as actions from "../constants/actions/index";
|
|
|
import Player from "./Player";
|
|
|
-import Library from "./Library";
|
|
|
-import store from "../store";
|
|
|
+// import Library from "./Library";
|
|
|
+// import store from "../store";
|
|
|
|
|
|
import { Spin } from "antd";
|
|
|
|
|
@@ -21,7 +32,11 @@ import Footer from "./Footer";
|
|
|
import "../styles/library.css";
|
|
|
import "../styles/playlists.css";
|
|
|
|
|
|
+
|
|
|
+
|
|
|
const Playlist = ({
|
|
|
+ playlistsItemTrack,
|
|
|
+ // playlistFilteredTracks,
|
|
|
actionOneTrackFind,
|
|
|
actionSetTrack,
|
|
|
state,
|
|
@@ -36,118 +51,24 @@ const Playlist = ({
|
|
|
oneTrackFind,
|
|
|
}) => {
|
|
|
const [getTrack, setGetTrack] = useState([]);
|
|
|
+
|
|
|
console.log(state.player.playlists);
|
|
|
- const Track = ({ track, dispatch }) => {
|
|
|
- //выводм по треку из плейлиста
|
|
|
- // const setTrack = ()=>{
|
|
|
-
|
|
|
- // }
|
|
|
- // dispatch(setTrack(track));
|
|
|
- // let artist = "";
|
|
|
- // let album = "";
|
|
|
- // if (track.id3) {
|
|
|
- // if (track.id3.artist && track.id3.album) {
|
|
|
- // artist = track.id3.artist;
|
|
|
- // album = track.id3.album;
|
|
|
- // } else {
|
|
|
- // }
|
|
|
- // } else {
|
|
|
- // }
|
|
|
- const [addTrack, setAddTrack] = useState()
|
|
|
- const [prevTrack, setPrevTrack] = useState()
|
|
|
- return(
|
|
|
- <>
|
|
|
- {track.id3 ? (
|
|
|
- track.id3.artist && track.id3.album ? (
|
|
|
- <li onClick={(e) =>
|
|
|
- setAddTrack(track.url)
|
|
|
- // setCurrentTrack(e.target.id)
|
|
|
- }>
|
|
|
- <span>{track.id3.artist}</span>
|
|
|
- <span>{track.id3.album}</span>
|
|
|
- </li>
|
|
|
- ) : (
|
|
|
- ""
|
|
|
- )
|
|
|
- ) : (
|
|
|
- ""
|
|
|
- )}
|
|
|
- {setPrevTrack(addTrack)}
|
|
|
- {addTrack? <Player turl={addTrack} /> : <Player turl={prevTrack} />}
|
|
|
- </>
|
|
|
- );
|
|
|
- };
|
|
|
-
|
|
|
- const Tracks = ({
|
|
|
- playlistsItem,
|
|
|
- highlighted,
|
|
|
- actionSetTrack,
|
|
|
- actionOneTrackFind,
|
|
|
- }) => {
|
|
|
- //выводм по плейлисту из общего плейлиста(хранилища)
|
|
|
- const { _id, name, tracks, trackIndex } = playlistsItem;
|
|
|
- let arr =
|
|
|
- playlistsItem && playlistsItem.tracks
|
|
|
- ? playlistsItem.tracks.filter(
|
|
|
- (track) => track.id3 && track.id3.artist && track.id3.album
|
|
|
- )
|
|
|
- : [];
|
|
|
- // setGetTrack(arr);
|
|
|
- // {
|
|
|
- // if (track.id3 && track.id3.artist && track.id3.album) {
|
|
|
- // return true; //оставляем в массиве
|
|
|
- // } else {
|
|
|
- // return false; //удалаяем из массива
|
|
|
- // }
|
|
|
- // })
|
|
|
- // [];
|
|
|
- return (
|
|
|
- <>
|
|
|
- {arr.length > 0 ? (
|
|
|
- <li
|
|
|
- id={_id}
|
|
|
- onMouseEnter={
|
|
|
- (e) => {
|
|
|
- console.dir(e.target);
|
|
|
- return actionOneTrackFind(e.target.id);
|
|
|
- }
|
|
|
- // console.log(e.target.id);
|
|
|
-
|
|
|
- // return store.dispatch(actionSetTrack(, e.target.firstChild.data, e.target.id))
|
|
|
- }
|
|
|
- className={highlighted ? "highlighted" : null}
|
|
|
- // onClick={(e) => setCurrentTrack(trackIndex)}
|
|
|
- // onClick={() => {
|
|
|
- // }}
|
|
|
- >
|
|
|
- {name}
|
|
|
- <ul
|
|
|
- className="playlist_item"
|
|
|
- // onMouseOver={(e)=> {
|
|
|
- // // console.dir(e.target);
|
|
|
- // return actionOneTrackFind(e.target.parentElement.id)
|
|
|
- // }}
|
|
|
- // onMouseOver={(e)=> actionOneTrackFind(e.target.id)
|
|
|
- >
|
|
|
- {playlistsItem.tracks
|
|
|
- ? arr.map((track) => <Track track={track} />)
|
|
|
- : ""}
|
|
|
- </ul>
|
|
|
- </li>
|
|
|
- ) : (
|
|
|
- ""
|
|
|
- )}
|
|
|
- </>
|
|
|
- );
|
|
|
- };
|
|
|
+
|
|
|
+ console.log("playlistsItemTrack: 0", playlistsItemTrack)
|
|
|
+ let playlistFilteredTracks = [];
|
|
|
+
|
|
|
+
|
|
|
+ // let playlistFilteredTracks = [];
|
|
|
|
|
|
useEffect(() => {
|
|
|
getPlaylist && getPlaylist();
|
|
|
}, []);
|
|
|
- console.log(playlists);
|
|
|
+ console.log("playlists in Playlist: ", playlists);
|
|
|
useEffect(() => {
|
|
|
setTrack && setTrack();
|
|
|
}, []);
|
|
|
+ // playlistFilteredTracks = playlistsItemTrack;
|
|
|
+ console.log("playlistFilteredTracks in Playlist: ", playlistFilteredTracks)
|
|
|
return (
|
|
|
<div className="wrapper">
|
|
|
<Header />
|
|
@@ -164,10 +85,16 @@ const Playlist = ({
|
|
|
playlistsItem &&
|
|
|
playlistsItem.tracks &&
|
|
|
playlistsItem.tracks.length > 0 ? (
|
|
|
- <Tracks
|
|
|
- playlistsItem={playlistsItem}
|
|
|
- actionOneTrackFind={actionOneTrackFind}
|
|
|
- />
|
|
|
+ // <p>
|
|
|
+ <PlaylistTracks
|
|
|
+ playlistsItem={playlistsItem}
|
|
|
+ actionOneTrackFind={actionOneTrackFind}
|
|
|
+ playlistFilteredTracks={playlistFilteredTracks}
|
|
|
+ getTrack={getTrack}
|
|
|
+ setGetTrack={setGetTrack}
|
|
|
+ highlighted = { highlighted }
|
|
|
+ />
|
|
|
+ // </p>
|
|
|
) : (
|
|
|
""
|
|
|
)
|
|
@@ -175,7 +102,12 @@ const Playlist = ({
|
|
|
</ul>
|
|
|
</div>
|
|
|
</div>
|
|
|
- {/* <Player track={getTrack} /> */}
|
|
|
+ {console.log('getTrack: ', getTrack) }
|
|
|
+ {console.log("playlistFilteredTracks in Playlist: ", playlistFilteredTracks)}
|
|
|
+ {/* <Player track={playlistFilteredTracks} /> */}
|
|
|
+ <Player track={getTrack} />
|
|
|
+ {/* <Player track={getTrack} playlistFilteredTracks={playlistFilteredTracks} /> */}
|
|
|
+ {/* works */}
|
|
|
{/* <Player playlist={playlist} /> */}
|
|
|
{/* <Player playlist={tracks} /> */}
|
|
|
<Footer />
|
|
@@ -183,22 +115,26 @@ const Playlist = ({
|
|
|
);
|
|
|
};
|
|
|
|
|
|
-const mapDispatchToProps = (dispatch) => ({
|
|
|
- getPlaylist: () => dispatch(getPlaylist()),
|
|
|
- // oneTrackFind: ()=> dispatch(oneTrackFind()),
|
|
|
- actionOneTrackFind: oneTrackFind,
|
|
|
+// const mapDispatchToProps = (dispatch) => ({
|
|
|
+// getPlaylist: () => dispatch(getPlaylist()),
|
|
|
+// // oneTrackFind: ()=> dispatch(oneTrackFind()),
|
|
|
+// actionOneTrackFind: oneTrackFind,
|
|
|
|
|
|
- // setTrack: () => dispatch(setTrack),
|
|
|
-});
|
|
|
+// // setTrack: () => dispatch(setTrack),
|
|
|
+// });
|
|
|
|
|
|
-const mapDispatchToProps2 = {
|
|
|
- getPlaylist: getPlaylist,
|
|
|
- actionOneTrackFind: oneTrackFind,
|
|
|
-};
|
|
|
+// const mapDispatchToProps2 = {
|
|
|
+// getPlaylist: getPlaylist,
|
|
|
+// actionOneTrackFind: oneTrackFind,
|
|
|
+// setCurrentTrack: (trackIndex) => dispatch(setCurrentTrack(trackIndex)),
|
|
|
+// };
|
|
|
|
|
|
const mapStateToProps = (state) => ({
|
|
|
playlists: state && state.player && state.player.playlists,
|
|
|
state: state,
|
|
|
+ // tracks: state.player.tracks,
|
|
|
+ currentTrack: state.player.currentTrack,
|
|
|
+ // playlist: state.player.playlist,
|
|
|
// track: state.player.track,
|
|
|
// login: (state.auth.data.data && state.auth.data.data.sub.login) || "",
|
|
|
});
|
|
@@ -209,9 +145,11 @@ const mapStateToProps = (state) => ({
|
|
|
// login: (state.auth.data.data && state.auth.data.data.sub.login) || "",
|
|
|
// });
|
|
|
|
|
|
-// const mapDispatchToProps = (dispatch) => ({
|
|
|
-// getPlaylist: () => dispatch(getPlaylist()),
|
|
|
-// setCurrentTrack: (trackIndex) => dispatch(setCurrentTrack(trackIndex)),
|
|
|
-// });
|
|
|
+const mapDispatchToProps = (dispatch) => ({
|
|
|
+ getPlaylist: ()=>setTimeout(() => dispatch(getPlaylist()), 2000),
|
|
|
+ // getPlaylist: () => dispatch(getPlaylist()),
|
|
|
+ setCurrentTrack: (trackIndex) => dispatch(setCurrentTrack(trackIndex)),
|
|
|
+});
|
|
|
|
|
|
-export default connect(mapStateToProps, mapDispatchToProps2)(Playlist);
|
|
|
+// export default connect(mapStateToProps, mapDispatchToProps2)(Playlist);
|
|
|
+export default connect(mapStateToProps, mapDispatchToProps)(Playlist);
|