|
@@ -5,9 +5,34 @@ import {store} from "./store";
|
|
|
|
|
|
export const playerReducer = (
|
|
|
state = {},
|
|
|
- {type,track,trackIndex,isPlaying=false,isPaused,duration,
|
|
|
+ {type,track,isPlaying=false,isPaused,duration,
|
|
|
playlist,playlistIndex,currentTime=0,volume=1,}) => {
|
|
|
|
|
|
+ if (type === "NEXT_TRACK") {
|
|
|
+ return {
|
|
|
+ ...state,
|
|
|
+ playlistIndex,
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if (type === "PREVIOUS_TRACK") {
|
|
|
+ return {
|
|
|
+ ...state,
|
|
|
+ playlistIndex,
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ if (type === "TRACK_LOAD") {
|
|
|
+ return {
|
|
|
+ ...state,
|
|
|
+ playlistIndex,
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
if (type === "TRACK_PLAY") {
|
|
|
return {
|
|
|
...state,
|
|
@@ -57,22 +82,39 @@ export const playerReducer = (
|
|
|
|
|
|
|
|
|
const audio = new Audio()
|
|
|
+audio.onended = function(){actionNextTrack()}
|
|
|
|
|
|
+export const actionTrackLoad = (trackIndex) =>
|
|
|
+ ({type:'ACTION_TRACK_LOAD', trackIndex})
|
|
|
|
|
|
-export const actionTrackPlay = (trackIndex) =>
|
|
|
- ({type:'ACTION_TRACK_PLAY', trackIndex})
|
|
|
-export function* trackPlayWorker (action) {
|
|
|
+export function* trackLoadWorker (action) {
|
|
|
let {trackIndex} = action
|
|
|
let {player:{playlist}} = yield select ()
|
|
|
// if (playlistIndex !== trackIndex) {
|
|
|
audio.src = backURL + '/'+ playlist[trackIndex].url
|
|
|
audio.load()
|
|
|
+ console.log(trackIndex)
|
|
|
audio.ondurationchange = function(){actionSetDuration()}
|
|
|
audio.ontimeupdate = function(){actionTrackCurrentTime()}
|
|
|
- // }
|
|
|
+ yield put({type:"TRACK_LOAD",playlistIndex:trackIndex})
|
|
|
+ yield put (actionTrackPlay())
|
|
|
+
|
|
|
+}
|
|
|
+export function* trackLoadWatcher() {
|
|
|
+ yield takeEvery ('ACTION_TRACK_LOAD',trackLoadWorker)
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+export const actionTrackPlay = () =>
|
|
|
+ ({type:'ACTION_TRACK_PLAY'})
|
|
|
+export function* trackPlayWorker () {
|
|
|
yield audio.play()
|
|
|
- console.log(trackIndex,'uuuuu')
|
|
|
- yield put({type:"TRACK_PLAY",isPlaying:true,isPaused:false,trackIndex})
|
|
|
+ yield put({type:"TRACK_PLAY",isPlaying:true,isPaused:false})
|
|
|
+ console.log('play')
|
|
|
}
|
|
|
export function* trackPlayWatcher() {
|
|
|
yield takeEvery ('ACTION_TRACK_PLAY',trackPlayWorker)
|
|
@@ -80,6 +122,44 @@ export function* trackPlayWatcher() {
|
|
|
|
|
|
|
|
|
|
|
|
+export const actionNextTrack = () =>
|
|
|
+ ({type:'ACTION_NEXT_TRACK'})
|
|
|
+
|
|
|
+export function* nextTrackWorker () {
|
|
|
+ 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()
|
|
|
+}
|
|
|
+export function* nextTrackWatcher() {
|
|
|
+ yield takeEvery ('ACTION_NEXT_TRACK',nextTrackWorker)
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+export const actionPreviousTrack = () =>
|
|
|
+ ({type:'ACTION_PREVIOUS_TRACK'})
|
|
|
+
|
|
|
+export function* previousTrackWorker () {
|
|
|
+ let {player} = yield select ()
|
|
|
+ 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()
|
|
|
+}
|
|
|
+export function* previousTrackWatcher() {
|
|
|
+ yield takeEvery ('ACTION_PREVIOUS_TRACK',previousTrackWorker)
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
|
|
|
|
|
|
export const actionTrackStop = () =>
|
|
@@ -131,9 +211,8 @@ export const actionSetPlaylist = (playlist,trackIndex) =>
|
|
|
|
|
|
export function* setPlaylistWorker(action) {
|
|
|
let {playlist, trackIndex} = action
|
|
|
- console.log (playlist,'trackplay')
|
|
|
yield put ({type:"SET_PLAYLIST", playlist:playlist})
|
|
|
- yield put (actionTrackPlay(trackIndex))
|
|
|
+ yield put (actionTrackLoad(trackIndex))
|
|
|
}
|
|
|
|
|
|
export function* setPlaylistWatcher() {
|