Removing/unfollowing playlists

This commit is contained in:
James Barnsley
2017-08-22 20:44:36 +12:00
parent 8253928f6b
commit 403a3fbd8f
5 changed files with 103 additions and 34 deletions

View File

@ -1,5 +1,7 @@
import * as helpers from '../../helpers'
var spotifyActions = require('../../services/spotify/actions')
var mopidyActions = require('../../services/mopidy/actions')
export function getBroadcasts(){
return (dispatch, getState) => {
@ -84,7 +86,7 @@ export function reorderPlaylistTracks( uri, indexes, insert_before, snapshot_id
}
export function savePlaylist(uri, name, description = '', is_public = false, is_collaborative = false){
switch( helpers.uriSource( uri ) ){
switch (helpers.uriSource(uri)){
case 'spotify':
return {
@ -107,23 +109,28 @@ export function savePlaylist(uri, name, description = '', is_public = false, is_
}
export function createPlaylist(scheme, name, description = '', is_public = false, is_collaborative = false){
switch( scheme ){
switch (scheme){
case 'spotify':
return {
type: 'SPOTIFY_CREATE_PLAYLIST',
name: name,
description: (description == '' ? null : description),
is_public: is_public,
is_collaborative: is_collaborative
if (description == ''){
description = null
}
return spotifyActions.createPlaylist( name, description, is_public, is_collaborative )
case 'm3u':
return {
type: 'MOPIDY_CREATE_PLAYLIST',
scheme: scheme,
name: name
}
default:
return mopidyActions.createPlaylist(name, scheme)
}
return false
}
export function deletePlaylist(uri){
switch (helpers.uriSource(uri)){
case 'spotify':
return spotifyActions.following(uri, 'DELETE')
default:
return mopidyActions.deletePlaylist(uri)
}
return false
}

View File

@ -160,6 +160,14 @@ export function getImages( context, uris ){
}
}
export function createPlaylist(name, scheme){
return {
type: 'MOPIDY_CREATE_PLAYLIST',
name: name,
scheme: scheme
}
}
export function deletePlaylist( uri ){
return {
type: 'MOPIDY_DELETE_PLAYLIST',

View File

@ -830,18 +830,28 @@ const MopidyMiddleware = (function(){
.then( response => {
store.dispatch(uiActions.createNotification('Created playlist'))
// re-load our global playlists
//store.dispatch({ type: 'MOPIDY_GET_PLAYLISTS' });
store.dispatch({
type: 'PLAYLIST_LOADED',
key: action.uri,
playlist: response
})
store.dispatch({
type: 'MOPIDY_LIBRARY_PLAYLIST_CREATED',
key: action.uri,
playlist: response
})
});
break
case 'MOPIDY_DELETE_PLAYLIST':
instruct( socket, store, 'playlists.delete', { uri: action.key })
instruct( socket, store, 'playlists.delete', { uri: action.uri })
.then( response => {
store.dispatch(uiActions.createNotification('Deleted playlist'))
// re-load our global playlists
// store.dispatch({ type: 'MOPIDY_PLAYLISTS' });
store.dispatch({
type: 'MOPIDY_LIBRARY_PLAYLIST_DELETED',
key: action.uri
})
});
break

View File

@ -109,6 +109,22 @@ export default function reducer(mopidy = {}, action){
}
return Object.assign({}, mopidy, { library_playlists: helpers.removeDuplicates(uris) })
case 'MOPIDY_LIBRARY_PLAYLIST_CREATED':
var library_playlists = []
if (mopidy.library_playlists){
library_playlists = Object.assign([], mopidy.library_playlists)
library_playlists.push(action.key)
}
return Object.assign({}, mopidy, { library_playlists: library_playlists })
case 'MOPIDY_LIBRARY_PLAYLIST_DELETED':
var library_playlists = []
if (mopidy.library_playlists){
library_playlists = Object.assign([], mopidy.library_playlists)
library_playlists.splice(library_playlists.indexOf(action.uri), 1)
}
return Object.assign({}, mopidy, { library_playlists: library_playlists })
case 'MOPIDY_LIBRARY_ARTISTS_LOADED':
if (mopidy.library_artists){
var uris = [...mopidy.library_artists,...action.uris]