|
@@ -7,22 +7,10 @@ import { sortableContainer, sortableElement } from 'react-sortable-hoc';
|
|
import { arrayMoveImmutable } from 'array-move';
|
|
import { arrayMoveImmutable } from 'array-move';
|
|
|
|
|
|
|
|
|
|
-const Track = ({ track, playlist, player, setTrack, playTrack, pauseTrack, setPlaylist, setIndex }) => {
|
|
|
|
|
|
+const Track = ({ track, playlist, player, setTrack, playTrack, pauseTrack }) => {
|
|
let [_player, setPlayer] = useState()
|
|
let [_player, setPlayer] = useState()
|
|
let [isPlay, setPlay] = useState(true)
|
|
let [isPlay, setPlay] = useState(true)
|
|
- //let [_playlist, _setPlaylist] = useState(playlist)
|
|
|
|
-
|
|
|
|
useEffect(() => setPlayer(player), [player])
|
|
useEffect(() => setPlayer(player), [player])
|
|
- useEffect(() => {
|
|
|
|
- if(playlist?._id === player?.playlist?._id) {
|
|
|
|
- console.log(playlist?._id, player?.playlist?._id)
|
|
|
|
- if(_player?.track && _player?.playlist) setIndex(_player?.playlist?.indexOf(_player?.track))
|
|
|
|
- setPlaylist(playlist)
|
|
|
|
- console.log('index', _player?.playlistIndex)
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
- console.log('changed', playlist)
|
|
|
|
- }, [playlist, setPlaylist, setIndex])
|
|
|
|
|
|
|
|
return (
|
|
return (
|
|
<li style={{ border: '1px solid black', display: 'flex', alignItems: 'center' }}>
|
|
<li style={{ border: '1px solid black', display: 'flex', alignItems: 'center' }}>
|
|
@@ -33,7 +21,11 @@ const Track = ({ track, playlist, player, setTrack, playTrack, pauseTrack, setPl
|
|
<button
|
|
<button
|
|
style={{ fontSize: '3vh' }}
|
|
style={{ fontSize: '3vh' }}
|
|
onClick={() => {
|
|
onClick={() => {
|
|
- if (track?._id !== _player?.track?._id) setTrack(track, playlist)
|
|
|
|
|
|
+ if (track?._id !== _player?.track?._id) {
|
|
|
|
+ //setTrack(track, (playlist.constructor.name === 'Array'? playlist : playlist.tracks))
|
|
|
|
+ console.log('setting playlist', playlist)
|
|
|
|
+ setTrack(track, playlist)
|
|
|
|
+ }
|
|
playTrack()
|
|
playTrack()
|
|
setPlay(true)
|
|
setPlay(true)
|
|
}}
|
|
}}
|
|
@@ -56,36 +48,61 @@ const TrackConnect = connect(
|
|
{
|
|
{
|
|
setTrack: action.setTrack,
|
|
setTrack: action.setTrack,
|
|
pauseTrack: action.pauseTrack,
|
|
pauseTrack: action.pauseTrack,
|
|
- playTrack: action.playTrack,
|
|
|
|
- setPlaylist: action.setPlaylist,
|
|
|
|
- setIndex: action.setIndex
|
|
|
|
|
|
+ playTrack: action.playTrack
|
|
}
|
|
}
|
|
)(Track)
|
|
)(Track)
|
|
|
|
|
|
const SortableItem = sortableElement(TrackConnect);
|
|
const SortableItem = sortableElement(TrackConnect);
|
|
const SortableContainer = sortableContainer(({ children }) => { return <ul>{children}</ul> });
|
|
const SortableContainer = sortableContainer(({ children }) => { return <ul>{children}</ul> });
|
|
|
|
|
|
-const Playlist = ({ playlist, updPlaylist }) => {
|
|
|
|
|
|
+const Playlist = ({ player, playlist, setPlaylist, updPlaylist, setIndex }) => {
|
|
let [_tracks, setTracks] = useState()
|
|
let [_tracks, setTracks] = useState()
|
|
-
|
|
|
|
- useEffect(() => setTracks(playlist[0]?.tracks), [playlist])
|
|
|
|
|
|
+ let [_player, setPlayer] = useState()
|
|
|
|
+ useEffect(() => setPlayer(player), [player])
|
|
|
|
+ useEffect(() => {
|
|
|
|
+ setTracks(playlist[0]?.tracks)
|
|
|
|
+ }, [playlist])
|
|
|
|
|
|
const onSortEnd = ({ oldIndex, newIndex }) => {
|
|
const onSortEnd = ({ oldIndex, newIndex }) => {
|
|
- setTracks(arrayMoveImmutable(_tracks, oldIndex, newIndex))
|
|
|
|
- updPlaylist(playlist[0]._id, arrayMoveImmutable(_tracks, oldIndex, newIndex).map(track => ({ _id: track._id })))
|
|
|
|
|
|
+ let newArr = arrayMoveImmutable(_tracks, oldIndex, newIndex)
|
|
|
|
+ setTracks(newArr)
|
|
|
|
+ updPlaylist(playlist[0]._id, newArr.map(track => ({ _id: track._id })))
|
|
|
|
+ //setPlaylist(newArr)
|
|
|
|
+ console.log(_player, _player.playlist)
|
|
|
|
+ if(_player.playlist.tracks) {
|
|
|
|
+ _player.playlist.tracks = newArr
|
|
|
|
+ setPlaylist(_player.playlist.tracks)
|
|
|
|
+ console.log('amoma', _player.playlist)
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ let aboba = _player.playlist
|
|
|
|
+
|
|
|
|
+ console.log('aboba', aboba)
|
|
|
|
+ setPlaylist({..._player.playlist, 'tracks': newArr})
|
|
|
|
+ //setPlaylist({..._player.playlist, 'tracks': newArr})
|
|
|
|
+ //setPlaylist(_player?.playlist.constructor.name === 'Array'? newArr : {..._player.playlist, 'tracks': newArr})
|
|
|
|
+ if (_player?.track) setIndex(newArr.map((item) => item._id).indexOf(_player?.track?._id))
|
|
};
|
|
};
|
|
return (
|
|
return (
|
|
<>
|
|
<>
|
|
<h2>{playlist[0]?.name || 'Playlist'}</h2>
|
|
<h2>{playlist[0]?.name || 'Playlist'}</h2>
|
|
<SortableContainer onSortEnd={onSortEnd}>
|
|
<SortableContainer onSortEnd={onSortEnd}>
|
|
- {(_tracks || []).map((track, index) => <SortableItem index={index} track={track} playlist={playlist[0]?.tracks} />)}
|
|
|
|
|
|
+ {/* {(_tracks || []).map((track, index) => <SortableItem index={index} track={track} playlist={playlist[0]?.tracks} />)} */}
|
|
|
|
+ {(_tracks || []).map((track, index) => <SortableItem index={index} track={track} playlist={playlist[0]} />)}
|
|
</SortableContainer>
|
|
</SortableContainer>
|
|
</>
|
|
</>
|
|
)
|
|
)
|
|
}
|
|
}
|
|
export const PlaylistConnect = connect(
|
|
export const PlaylistConnect = connect(
|
|
- state => ({ playlist: state.promise.playlistTracks?.payload || [] }),
|
|
|
|
- { updPlaylist: action.actionUpdatePlaylist }
|
|
|
|
|
|
+ state => ({
|
|
|
|
+ playlist: state.promise.playlistTracks?.payload || [],
|
|
|
|
+ player: state.player || {}
|
|
|
|
+ }),
|
|
|
|
+ {
|
|
|
|
+ updPlaylist: action.actionUpdatePlaylist,
|
|
|
|
+ setPlaylist: action.setPlaylist,
|
|
|
|
+ setIndex: action.setIndex
|
|
|
|
+ }
|
|
)(Playlist)
|
|
)(Playlist)
|
|
|
|
|
|
const PlaylistTrackDropzone = ({ playlist, uploadTrack }) => {
|
|
const PlaylistTrackDropzone = ({ playlist, uploadTrack }) => {
|
|
@@ -98,7 +115,7 @@ const PlaylistTrackDropzone = ({ playlist, uploadTrack }) => {
|
|
const onDrop = useCallback(acceptedFiles => {
|
|
const onDrop = useCallback(acceptedFiles => {
|
|
uploadTrack(acceptedFiles[0], playlistId)
|
|
uploadTrack(acceptedFiles[0], playlistId)
|
|
}, [uploadTrack, playlistId])
|
|
}, [uploadTrack, playlistId])
|
|
- const { getRootProps, getInputProps, isDragActive } = useDropzone({ onDrop })
|
|
|
|
|
|
+ const { getRootProps, isDragActive } = useDropzone({ onDrop })
|
|
return (
|
|
return (
|
|
<div
|
|
<div
|
|
{...getRootProps()}
|
|
{...getRootProps()}
|
|
@@ -140,7 +157,7 @@ const UserTracksDropzone = ({ onLoad }) => {
|
|
const onDrop = useCallback(acceptedFiles => {
|
|
const onDrop = useCallback(acceptedFiles => {
|
|
onLoad(acceptedFiles[0])
|
|
onLoad(acceptedFiles[0])
|
|
}, [onLoad])
|
|
}, [onLoad])
|
|
- const { getRootProps, getInputProps, isDragActive } = useDropzone({ onDrop })
|
|
|
|
|
|
+ const { getRootProps, isDragActive } = useDropzone({ onDrop })
|
|
return (
|
|
return (
|
|
<div
|
|
<div
|
|
{...getRootProps()}
|
|
{...getRootProps()}
|