93 lines
2.3 KiB
JavaScript
93 lines
2.3 KiB
JavaScript
|
export const PLAY_PAUSE = "PLAY_PAUSE";
|
||
|
/**
|
||
|
* true to play, false to pause.
|
||
|
*/
|
||
|
export function togglePlaying(playPause) {
|
||
|
return (dispatch, getState) => {
|
||
|
let isPlaying = false;
|
||
|
if (typeof playPause !== "undefined") {
|
||
|
isPlaying = playPause;
|
||
|
} else {
|
||
|
isPlaying = !(getState().webplayer.isPlaying);
|
||
|
}
|
||
|
dispatch({
|
||
|
type: PLAY_PAUSE,
|
||
|
payload: {
|
||
|
isPlaying: isPlaying
|
||
|
}
|
||
|
});
|
||
|
};
|
||
|
}
|
||
|
|
||
|
export const PUSH_PLAYLIST = "PUSH_PLAYLIST";
|
||
|
export function playTrack(trackID) {
|
||
|
return (dispatch, getState) => {
|
||
|
const track = getState().api.entities.getIn(["track", trackID]);
|
||
|
const album = getState().api.entities.getIn(["album", track.get("album")]);
|
||
|
const artist = getState().api.entities.getIn(["artist", track.get("artist")]);
|
||
|
dispatch({
|
||
|
type: PUSH_PLAYLIST,
|
||
|
payload: {
|
||
|
playlist: [trackID],
|
||
|
tracks: [
|
||
|
[trackID, track]
|
||
|
],
|
||
|
albums: [
|
||
|
[album.get("id"), album]
|
||
|
],
|
||
|
artists: [
|
||
|
[artist.get("id"), artist]
|
||
|
]
|
||
|
}
|
||
|
});
|
||
|
dispatch(togglePlaying(true));
|
||
|
};
|
||
|
}
|
||
|
|
||
|
export const CHANGE_TRACK = "CHANGE_TRACK";
|
||
|
export function playPrevious() {
|
||
|
// TODO: Playlist overflow
|
||
|
return (dispatch, getState) => {
|
||
|
let { index } = getState().webplayer;
|
||
|
dispatch({
|
||
|
type: CHANGE_TRACK,
|
||
|
payload: {
|
||
|
index: index - 1
|
||
|
}
|
||
|
});
|
||
|
};
|
||
|
}
|
||
|
export function playNext() {
|
||
|
// TODO: Playlist overflow
|
||
|
return (dispatch, getState) => {
|
||
|
let { index } = getState().webplayer;
|
||
|
dispatch({
|
||
|
type: CHANGE_TRACK,
|
||
|
payload: {
|
||
|
index: index + 1
|
||
|
}
|
||
|
});
|
||
|
};
|
||
|
}
|
||
|
|
||
|
export const TOGGLE_RANDOM = "TOGGLE_RANDOM";
|
||
|
export function toggleRandom() {
|
||
|
return {
|
||
|
type: TOGGLE_RANDOM
|
||
|
};
|
||
|
}
|
||
|
|
||
|
export const TOGGLE_REPEAT = "TOGGLE_REPEAT";
|
||
|
export function toggleRepeat() {
|
||
|
return {
|
||
|
type: TOGGLE_REPEAT
|
||
|
};
|
||
|
}
|
||
|
|
||
|
export const TOGGLE_MUTE = "TOGGLE_MUTE";
|
||
|
export function toggleMute() {
|
||
|
return {
|
||
|
type: TOGGLE_MUTE
|
||
|
};
|
||
|
}
|