Removing tracks from spotify AND mopidy playlists

This commit is contained in:
James Barnsley
2016-11-13 12:55:00 +13:00
parent b2fa2c0f1e
commit 003b1d6569
8 changed files with 93 additions and 43 deletions

View File

@ -1,4 +1,5 @@
import * as helpers from '../../helpers'
export function showContextMenu( e, context = false, data ){
return {
@ -65,18 +66,52 @@ export function dragEnd(){
return { type: 'DRAG_END' }
}
export function removeTracksFromPlaylist( track_indexes ){
return {
type: 'REMOVE_TRACKS_FROM_PLAYLIST',
track_indexes: track_indexes
export function removeTracksFromPlaylist( playlist_uri, tracks_indexes ){
switch( helpers.uriSource( playlist_uri ) ){
case 'spotify':
return {
type: 'SPOTIFY_REMOVE_PLAYLIST_TRACKS',
playlist_uri: playlist_uri,
tracks_indexes: tracks_indexes
}
case 'm3u':
return {
type: 'MOPIDY_REMOVE_PLAYLIST_TRACKS',
playlist_uri: playlist_uri,
tracks_indexes: tracks_indexes
}
defaut:
return ui
}
}
export function addTracksToPlaylist( playlist_uri, tracks ){
return {
type: 'ADD_TRACKS_TO_PLAYLIST',
playlist_uri: playlist_uri,
tracks: tracks
var tracks_uris = []
for( var i = 0; i < tracks.length; i++ ){
tracks_uris.push( tracks[i].uri )
}
switch( helpers.uriSource( playlist_uri ) ){
case 'spotify':
return {
type: 'SPOTIFY_ADD_PLAYLIST_TRACKS',
playlist_uri: playlist_uri,
tracks_uris: tracks_uris
}
break;
case 'm3u':
return {
type: 'MOPIDY_ADD_TRACKS_TO_PLAYLIST',
playlist_uri: playlist_uri,
tracks_uris: tracks_uris
}
break;
}
}

View File

@ -14,31 +14,6 @@ const UIMiddleware = (function(){
switch(action.type){
case 'REMOVE_TRACKS_FROM_PLAYLIST':
var playlist = store.getState().ui.playlist
switch( helpers.uriSource( playlist.uri ) ){
case 'spotify':
if( !store.getState().spotify.authorized ){
alert('Must be logged in to Spotify to do this')
return
}
if( !store.getState().spotify.me || store.getState().spotify.me.id != playlist.owner.id ){
alert('You can only modify tracks you own')
return
}
store.dispatch( spotifyActions.deleteTracksFromPlaylist( playlist.uri, playlist.snapshot_id, action.track_indexes ))
break
case 'm3u':
alert('TODO: delete from M3U')
break
}
case 'ADD_TRACKS_TO_PLAYLIST':
console.log(action)
break
// This action is irrelevant to us, pass it on to the next middleware
default:
return next(action);

View File

@ -227,12 +227,14 @@ export default function reducer(ui = {}, action){
var playlist = Object.assign({}, ui.playlist, { following: action.data })
return Object.assign({}, ui, { playlist: playlist });
case 'SPOTIFY_PLAYLIST_TRACKS_REMOVED':
case 'PLAYLIST_TRACKS_REMOVED':
var tracks = Object.assign([], ui.playlist.tracks)
for( var i = 0; i < action.positions.length; i++ ){
tracks.splice( action.positions[i], 1 )
for( var i = 0; i < action.tracks_indexes.length; i++ ){
tracks.splice( action.tracks_indexes[i], 1 )
}
var playlist = Object.assign({}, ui.playlist, action.snapshot_id, { tracks: tracks })
var snapshot_id = null
if( action.snapshot_id ) snapshot_id = action.snapshot_id
var playlist = Object.assign({}, ui.playlist, { tracks: tracks, snapshot_id: snapshot_id })
return Object.assign({}, ui, { playlist: playlist });