|
@@ -81,7 +81,8 @@ export const playerReducer = (
|
|
};
|
|
};
|
|
|
|
|
|
|
|
|
|
-const audio = new Audio()
|
|
|
|
|
|
+export const audio = new Audio()
|
|
|
|
+
|
|
audio.onended = function(){actionNextTrack()}
|
|
audio.onended = function(){actionNextTrack()}
|
|
|
|
|
|
export const actionTrackLoad = (trackIndex) =>
|
|
export const actionTrackLoad = (trackIndex) =>
|
|
@@ -127,31 +128,55 @@ export const actionNextTrack = () =>
|
|
|
|
|
|
export function* nextTrackWorker () {
|
|
export function* nextTrackWorker () {
|
|
let {player} = yield select ()
|
|
let {player} = yield select ()
|
|
- let p = player.playlistIndex
|
|
|
|
- yield put({type:"NEXT_TRACK",playlistIndex:p+1})
|
|
|
|
- audio.src = backURL + '/'+ player.playlist[p+1].url
|
|
|
|
- audio.load()
|
|
|
|
- audio.ondurationchange = function(){actionSetDuration()}
|
|
|
|
- audio.ontimeupdate = function(){actionTrackCurrentTime()}
|
|
|
|
- audio.play()
|
|
|
|
|
|
+ let playlistIndex = player.playlistIndex
|
|
|
|
+ let playlist = player.playlist
|
|
|
|
+ if (playlist.length === playlistIndex + 1) {
|
|
|
|
+ yield put({type:"NEXT_TRACK",playlistIndex:0})
|
|
|
|
+ audio.src = backURL + '/'+ player.playlist[0].url
|
|
|
|
+ audio.load()
|
|
|
|
+ audio.ondurationchange = function(){actionSetDuration()}
|
|
|
|
+ audio.ontimeupdate = function(){actionTrackCurrentTime()}
|
|
|
|
+ audio.play()
|
|
|
|
+ } else {
|
|
|
|
+ yield put({type:"NEXT_TRACK",playlistIndex:playlistIndex+1})
|
|
|
|
+ audio.src = backURL + '/'+ player.playlist[playlistIndex+1].url
|
|
|
|
+ audio.load()
|
|
|
|
+ audio.ondurationchange = function(){actionSetDuration()}
|
|
|
|
+ audio.ontimeupdate = function(){actionTrackCurrentTime()}
|
|
|
|
+ audio.play()
|
|
|
|
+ }
|
|
|
|
+ console.log(playlistIndex)
|
|
}
|
|
}
|
|
export function* nextTrackWatcher() {
|
|
export function* nextTrackWatcher() {
|
|
yield takeEvery ('ACTION_NEXT_TRACK',nextTrackWorker)
|
|
yield takeEvery ('ACTION_NEXT_TRACK',nextTrackWorker)
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
+
|
|
|
|
+
|
|
export const actionPreviousTrack = () =>
|
|
export const actionPreviousTrack = () =>
|
|
({type:'ACTION_PREVIOUS_TRACK'})
|
|
({type:'ACTION_PREVIOUS_TRACK'})
|
|
|
|
|
|
export function* previousTrackWorker () {
|
|
export function* previousTrackWorker () {
|
|
let {player} = yield select ()
|
|
let {player} = yield select ()
|
|
let p = player.playlistIndex
|
|
let p = player.playlistIndex
|
|
- yield put({type:"PREVIOUS_TRACK",playlistIndex:p-1})
|
|
|
|
- audio.src = backURL + '/'+ player.playlist[p-1].url
|
|
|
|
- audio.load()
|
|
|
|
- audio.ondurationchange = function(){actionSetDuration()}
|
|
|
|
- audio.ontimeupdate = function(){actionTrackCurrentTime()}
|
|
|
|
- audio.play()
|
|
|
|
|
|
+ if (p < 1) {
|
|
|
|
+ yield put({type:"NEXT_TRACK",playlistIndex:0})
|
|
|
|
+ audio.src = backURL + '/'+ player.playlist[0].url
|
|
|
|
+ audio.load()
|
|
|
|
+ audio.ondurationchange = function(){actionSetDuration()}
|
|
|
|
+ audio.ontimeupdate = function(){actionTrackCurrentTime()}
|
|
|
|
+ audio.play()
|
|
|
|
+ } else {
|
|
|
|
+ yield put({type:"PREVIOUS_TRACK",playlistIndex:p-1})
|
|
|
|
+ audio.src = backURL + '/'+ player.playlist[p-1].url
|
|
|
|
+ audio.load()
|
|
|
|
+ audio.ondurationchange = function(){actionSetDuration()}
|
|
|
|
+ audio.ontimeupdate = function(){actionTrackCurrentTime()}
|
|
|
|
+ audio.play()
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
}
|
|
}
|
|
export function* previousTrackWatcher() {
|
|
export function* previousTrackWatcher() {
|
|
yield takeEvery ('ACTION_PREVIOUS_TRACK',previousTrackWorker)
|
|
yield takeEvery ('ACTION_PREVIOUS_TRACK',previousTrackWorker)
|
|
@@ -220,31 +245,3 @@ export function* setPlaylistWatcher() {
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-// export const actionSetDuration = () =>
|
|
|
|
-// ({type:'ACTION_TRACK_DURATION'})
|
|
|
|
-//
|
|
|
|
-// export function* setDurationWorker () {
|
|
|
|
-// let e = audio.duration
|
|
|
|
-// yield put({type:"TRACK_DURATION",duration:e})
|
|
|
|
-// }
|
|
|
|
-//
|
|
|
|
-// export function* setDurationWatcher() {
|
|
|
|
-// yield takeEvery ('ACTION_TRACK_DURATION',setDurationWorker)
|
|
|
|
-// }
|
|
|
|
-//
|
|
|
|
-//
|
|
|
|
-//
|
|
|
|
-//
|
|
|
|
-// export const actionTrackCurrentTime = () =>
|
|
|
|
-// ({type:'ACTION_TRACK_CURRENT_TIME'})
|
|
|
|
-// export function* trackCurrentTimeWorker () {
|
|
|
|
-// let e = audio.currentTime
|
|
|
|
-// yield put({type:"TRACK_CURRENT_TIME", currentTime:e})
|
|
|
|
-// }
|
|
|
|
-// export function* trackCurrentTimeWatcher() {
|
|
|
|
-// yield takeEvery ('ACTION_TRACK_CURRENT_TIME', trackCurrentTimeWorker)
|
|
|
|
-// }
|
|
|