diff --git a/src/actions/nowPlayingActions.js b/src/actions/nowPlayingActions.js
index d365bb9..d648659 100644
--- a/src/actions/nowPlayingActions.js
+++ b/src/actions/nowPlayingActions.js
@@ -4,6 +4,7 @@ export const actionType = {
songAdd: 'SONG_ADD',
songRemove: 'SONG_REMOVE',
playNext: 'PLAY_NEXT',
+ playPrev: 'PLAY_PREV',
playedNext: 'PLAYED_NEXT',
getSuggestions: 'GET_SUGGESTIONS'
};
@@ -20,6 +21,10 @@ export function playNext() {
return dispatch => dispatch({type: actionType.playNext});
}
+export function playPrev() {
+ return dispatch => dispatch({ type: actionType.playPrev })
+}
+
export function playedNext(song) {
return dispatch => dispatch({type: actionType.playedNext, song});
}
diff --git a/src/components/player/index.js b/src/components/player/index.js
index d5a8268..0547474 100644
--- a/src/components/player/index.js
+++ b/src/components/player/index.js
@@ -127,6 +127,15 @@ export default class Player extends React.Component {
case keys.N:
this.props.playNext();
break;
+ case keys.P:
+ let existPrevious = this.props.prevSongs.length >= 2;
+ if(this.audioElement.currentTime <= 5 && existPrevious) {
+ this.props.playPrev();
+ this.props.playNext();
+ } else {
+ this.audioElement.currentTime = 0;
+ }
+ break;
case keys.F:
let searchElement = document.getElementById('search-input');
if (searchElement) {
diff --git a/src/components/sideBar/miniCard/miniCard.js b/src/components/sideBar/miniCard/miniCard.js
index d0137f6..ea706a6 100644
--- a/src/components/sideBar/miniCard/miniCard.js
+++ b/src/components/sideBar/miniCard/miniCard.js
@@ -25,8 +25,6 @@ export default class MiniCard extends React.Component {
videoTitle = videoTitle.substring(0, MAX_TITLE_LENGTH)+'... ';
}
- console.log(this.props.name);
-
return (
diff --git a/src/constants.js b/src/constants.js
index 6a3380e..3d588a9 100644
--- a/src/constants.js
+++ b/src/constants.js
@@ -8,5 +8,6 @@ export const keys = {
UP_ARROW: 38,
RIGHT_ARROW: 39,
DOWN_ARROW: 40,
- ENTER: 13
+ ENTER: 13,
+ P: 80
}
diff --git a/src/containers/playerContainer.js b/src/containers/playerContainer.js
index bfbdbde..d31f494 100644
--- a/src/containers/playerContainer.js
+++ b/src/containers/playerContainer.js
@@ -2,13 +2,14 @@ import {connect} from 'react-redux';
import Player from '../components/player';
import {playSong} from "../actions/playerActions";
-import {playNext, getSuggestions, playedNext} from "../actions/nowPlayingActions";
+import {playNext, getSuggestions, playedNext, playPrev} from "../actions/nowPlayingActions";
import {activatePlaylist, deactivatePlaylist} from '../actions/playerActions';
function mapStateToProps(state) {
return {
currentSong: state.player.currentSong,
- playlistActive: state.player.playlistActive
+ playlistActive: state.player.playlistActive,
+ prevSongs: state.nowPlaying.previousSongs
}
}
@@ -20,6 +21,7 @@ export default connect(
getSuggestions: getSuggestions,
playedNext: playedNext,
activatePlaylist,
- deactivatePlaylist
+ deactivatePlaylist,
+ playPrev
}
)(Player);
diff --git a/src/reducers/nowPlayingReducer.js b/src/reducers/nowPlayingReducer.js
index 8587bb8..c591960 100644
--- a/src/reducers/nowPlayingReducer.js
+++ b/src/reducers/nowPlayingReducer.js
@@ -32,6 +32,21 @@ export function nowPlaying(state = initialState, action) {
}
return {...state, dispatchNext: false, previousSongs: prev};
+ case actionType.playPrev:
+ if(state.previousSongs.length >= 2) {
+ let prev = state.previousSongs.slice(0, state.previousSongs.length - 2)
+ let songsToPlay = state.previousSongs.slice(state.previousSongs.length - 2)
+ let next = state.nextSongs.slice(0)
+ next = next.filter(item => !songInArray(item, songsToPlay));
+ next.unshift(...songsToPlay)
+ return {
+ ...state,
+ previousSongs: prev,
+ nextSongs: next
+ }
+ }
+ return state;
+
case actionType.getSuggestions:
if (action.suggestedSongs) {
suggestions = removeDuplicateIn(removeDuplicateIn(action.suggestedSongs, state.previousSongs), state.nextSongs);