Browse Source

navigation inside playlists and user uploads is now correct even if new track has been uploaded

miskson 2 years ago
parent
commit
b1bb491298
3 changed files with 16 additions and 17 deletions
  1. 13 9
      src/actions/index.js
  2. 2 7
      src/components/Page/index.js
  3. 1 1
      src/components/Sidebar/index.js

+ 13 - 9
src/actions/index.js

@@ -224,7 +224,7 @@ export const actionUpdatePlaylist = (playlistId, updPlaylist) =>
         await dispatch(actionPromise('trackToPlaylist', gql(`
             mutation($playlistId: ID, $newTracks: [TrackInput]) {
                 PlaylistUpsert(playlist:{ _id: $playlistId, tracks: $newTracks}) {
-                _id, name, tracks { _id, originalFileName, }
+                _id, name, tracks { _id, url, originalFileName, id3{ title, artist, album } }
                 }
             }
             `, { playlistId: playlistId, newTracks: updPlaylist }))
@@ -238,20 +238,24 @@ export const actionUploadUserTrack = (file, playlistId) =>
         await dispatch(actionLoadFile(file, 'track'))
 
         if (!playlistId) {
-            dispatch(actionGetUserTracks())
+            await dispatch(actionGetUserTracks())
+            if(getState().player.track && getState().player.playlist.constructor.name === 'Array') {
+                console.log('HERE', getState().promise.userTracks.payload)
+                dispatch(setPlaylist(getState().promise.userTracks.payload.reverse()))
+                dispatch(setIndex(getState().player.playlist.map(item => item._id).indexOf(getState().player.track._id)))
+            }
         } else {
-            console.log('UPLOADING TO PLAYLIS')
             let updPlaylist = []
             let oldPlaylist = getState().promise.playlistTracks.payload[0].tracks
 
-            if (oldPlaylist) {
-                //console.log('id pashet', oldPlaylist)
-                oldPlaylist.forEach(track => updPlaylist.push({ _id: track._id }))
-            }
+            if (oldPlaylist) oldPlaylist.forEach(track => updPlaylist.push({ _id: track._id }))
             updPlaylist.unshift({ _id: getState().promise.loadFile.payload?._id })
-            console.log('UPDATED PLST', updPlaylist)
-
             await dispatch(actionUpdatePlaylist(playlistId, updPlaylist))
+            
+            if(getState().player.track && getState().player.playlist._id === playlistId) {
+                dispatch(setPlaylist(getState().promise.trackToPlaylist.payload))
+                dispatch(setIndex(updPlaylist.map(item => item._id).indexOf(getState().player.track._id)))
+            }
         }
     }
 

+ 2 - 7
src/components/Page/index.js

@@ -21,11 +21,7 @@ const Track = ({ track, playlist, player, setTrack, playTrack, pauseTrack }) =>
           <button
             style={{ fontSize: '3vh' }}
             onClick={() => {
-              if (track?._id !== _player?.track?._id) {
-                //setTrack(track, (playlist.constructor.name === 'Array'? playlist : playlist.tracks))
-                console.log('setting playlist', playlist)
-                setTrack(track, playlist)
-              }
+              if (track?._id !== _player?.track?._id) setTrack(track, playlist)
               playTrack()
               setPlay(true)
             }}
@@ -125,12 +121,11 @@ const PlaylistPage = ({ match: { params: { _id } }, getTracks }) => {
 }
 export const PlaylistPageConnect = connect(null, { getTracks: action.actionGetPlaylistById })(PlaylistPage)
 
-
 const UserTracks = ({ user, tracks }) => {
   let tracksRev = [...tracks].reverse()
   return (
     <>
-      <h2>{user.login || 'My'} tracks:</h2>
+      <h2>{user.login || 'My'} uploaded tracks:</h2>
       <ul>{(tracksRev || []).map(track => <TrackConnect track={track} playlist={tracksRev} />)}</ul>
     </>
   )

+ 1 - 1
src/components/Sidebar/index.js

@@ -69,7 +69,7 @@ const UserTracksBtn = ({ userId }) => {
         margin: '5px',
         padding: '5px'
       }}
-    >My tracks</Link>
+    >My uploads</Link>
   )
 }
 export const UserTracksBtnConnect = connect(state => ({ userId: state.promise.userData?.payload?._id || '' }))(UserTracksBtn)