From fc55a112d2af4d9f251ef511eacb654ef0260b91 Mon Sep 17 00:00:00 2001 From: James Barnsley Date: Thu, 19 Jan 2017 13:19:11 +1300 Subject: [PATCH] Categories in full index --- src/js/services/mopidy/middleware.js | 16 ++++++------ src/js/services/spotify/actions.js | 24 ++++++++++++++--- src/js/services/spotify/middleware.js | 8 +++--- src/js/services/ui/actions.js | 32 +++++++++++------------ src/js/services/ui/middleware.js | 4 +-- src/js/views/discover/DiscoverCategory.js | 8 ++++-- 6 files changed, 57 insertions(+), 35 deletions(-) diff --git a/src/js/services/mopidy/middleware.js b/src/js/services/mopidy/middleware.js index 75bc71a7..f56a232f 100755 --- a/src/js/services/mopidy/middleware.js +++ b/src/js/services/mopidy/middleware.js @@ -408,7 +408,7 @@ const MopidyMiddleware = (function(){ case 'MOPIDY_ADD_PLAYLIST_TRACKS': - instruct( socket, store, 'playlists.lookup', { uri: action.uri }) + instruct( socket, store, 'playlists.lookup', { uri: action.key }) .then( response => { var tracks = []; for( var i = 0; i < action.tracks_uris.length; i++ ){ @@ -429,7 +429,7 @@ const MopidyMiddleware = (function(){ .then( response => { store.dispatch({ type: 'PLAYLIST_TRACKS_ADDED', - key: action.uri, + key: action.key, tracks_uris: action.tracks_uris }); }) @@ -445,7 +445,7 @@ const MopidyMiddleware = (function(){ var indexes = Object.assign([], action.tracks_indexes) indexes.sort(descending); - instruct( socket, store, 'playlists.lookup', { uri: action.uri }) + instruct( socket, store, 'playlists.lookup', { uri: action.key }) .then( response => { var playlist = Object.assign({}, response) for( var i = 0; i < indexes.length; i++ ){ @@ -455,7 +455,7 @@ const MopidyMiddleware = (function(){ .then( response => { store.dispatch({ type: 'PLAYLIST_TRACKS_REMOVED', - key: action.uri, + key: action.key, tracks_indexes: action.tracks_indexes }); }) @@ -463,14 +463,14 @@ const MopidyMiddleware = (function(){ break case 'MOPIDY_SAVE_PLAYLIST': - instruct( socket, store, 'playlists.lookup', { uri: action.uri }) + instruct( socket, store, 'playlists.lookup', { uri: action.key }) .then( response => { var playlist = Object.assign({}, response, { name: action.name }) instruct( socket, store, 'playlists.save', { playlist: playlist } ) .then( response => { store.dispatch({ type: 'PLAYLIST_UPDATED', - key: action.uri, + key: action.key, playlist: playlist }) }) @@ -478,7 +478,7 @@ const MopidyMiddleware = (function(){ break case 'MOPIDY_REORDER_PLAYLIST_TRACKS': - instruct( socket, store, 'playlists.lookup', { uri: action.uri }) + instruct( socket, store, 'playlists.lookup', { uri: action.key }) .then( response => { var playlist = Object.assign({}, response) @@ -530,7 +530,7 @@ const MopidyMiddleware = (function(){ break case 'MOPIDY_DELETE_PLAYLIST': - instruct( socket, store, 'playlists.delete', { uri: action.uri }) + instruct( socket, store, 'playlists.delete', { uri: action.key }) .then( response => { // re-load our global playlists diff --git a/src/js/services/spotify/actions.js b/src/js/services/spotify/actions.js index f4c585d3..d5431a51 100755 --- a/src/js/services/spotify/actions.js +++ b/src/js/services/spotify/actions.js @@ -870,7 +870,25 @@ export function createPlaylist( name, is_public ){ sendRequest( dispatch, getState, 'users/'+ getState().spotify.me.id +'/playlists/', 'POST', { name: name, public: is_public } ) .then( response => { - dispatch( getAllLibraryPlaylists() ); + + dispatch({ + type: 'PLAYLIST_LOADED', + key: response.uri, + playlist: Object.assign( + {}, + response, + { + can_edit: true, + tracks: [], + tracks_more: null, + tracks_total: 0 + }) + }); + + dispatch({ + type: 'LIBRARY_PLAYLISTS_LOADED', + uris: [response.uri] + }); }) } } @@ -950,9 +968,9 @@ export function toggleFollowingPlaylist( uri, method ){ sendRequest( dispatch, getState, 'users/'+ helpers.getFromUri('userid',uri) + '/playlists/'+ helpers.getFromUri('playlistid',uri) + '/followers', method ) .then( response => { dispatch({ - type: 'SPOTIFY_PLAYLIST_FOLLOWING', + type: 'SPOTIFY_PLAYLIST_FOLLOWING_LOADED', key: uri, - data: new_state + is_following: new_state }); }); } diff --git a/src/js/services/spotify/middleware.js b/src/js/services/spotify/middleware.js index 9469bbc2..d9617aba 100755 --- a/src/js/services/spotify/middleware.js +++ b/src/js/services/spotify/middleware.js @@ -26,7 +26,7 @@ const SpotifyMiddleware = (function(){ break case 'SPOTIFY_REMOVE_PLAYLIST_TRACKS': - var playlist = state.ui.playlists[action.uri] + var playlist = state.ui.playlists[action.key] if( !store.getState().spotify.authorized ){ store.dispatch( uiActions.createNotification( "Must be logged in to Spotify to do that", 'bad' ) ) @@ -46,7 +46,7 @@ const SpotifyMiddleware = (function(){ store.dispatch( uiActions.createNotification( "Must be logged in to Spotify to do that", 'bad' ) ) return } - store.dispatch( spotifyActions.addTracksToPlaylist( action.uri, action.tracks_uris )) + store.dispatch( spotifyActions.addTracksToPlaylist( action.key, action.tracks_uris )) break @@ -56,7 +56,7 @@ const SpotifyMiddleware = (function(){ store.dispatch( uiActions.createNotification( "Must be logged in to Spotify to do that", 'bad' ) ) return } - store.dispatch( spotifyActions.reorderPlaylistTracks( action.uri, action.range_start, action.range_length, action.insert_before, action.snapshot_id )) + store.dispatch( spotifyActions.reorderPlaylistTracks( action.key, action.range_start, action.range_length, action.insert_before, action.snapshot_id )) break @@ -66,7 +66,7 @@ const SpotifyMiddleware = (function(){ store.dispatch( uiActions.createNotification( "Must be logged in to Spotify to do that", 'bad' ) ) return } - store.dispatch( spotifyActions.savePlaylist( action.uri, action.name, action.is_public )) + store.dispatch( spotifyActions.savePlaylist( action.key, action.name, action.is_public )) break // when our mopidy server current track changes diff --git a/src/js/services/ui/actions.js b/src/js/services/ui/actions.js index a1f96eb3..f4c51895 100755 --- a/src/js/services/ui/actions.js +++ b/src/js/services/ui/actions.js @@ -71,14 +71,14 @@ export function set( data ){ } } -export function reorderPlaylistTracks( key, indexes, insert_before, snapshot_id = false ){ +export function reorderPlaylistTracks( uri, indexes, insert_before, snapshot_id = false ){ var range = helpers.createRange( indexes ); - switch( helpers.uriSource( key ) ){ + switch( helpers.uriSource( uri ) ){ case 'spotify': return { type: 'SPOTIFY_REORDER_PLAYLIST_TRACKS', - key: key, + key: uri, range_start: range.start, range_length: range.length, insert_before: insert_before, @@ -88,7 +88,7 @@ export function reorderPlaylistTracks( key, indexes, insert_before, snapshot_id case 'm3u': return { type: 'MOPIDY_REORDER_PLAYLIST_TRACKS', - key: key, + key: uri, range_start: range.start, range_length: range.length, insert_before: insert_before @@ -96,13 +96,13 @@ export function reorderPlaylistTracks( key, indexes, insert_before, snapshot_id } } -export function savePlaylist( key, name, is_public = false ){ - switch( helpers.uriSource( key ) ){ +export function savePlaylist( uri, name, is_public = false ){ + switch( helpers.uriSource( uri ) ){ case 'spotify': return { type: 'SPOTIFY_SAVE_PLAYLIST', - key: key, + key: uri, name: name, is_public: is_public } @@ -110,7 +110,7 @@ export function savePlaylist( key, name, is_public = false ){ case 'm3u': return { type: 'MOPIDY_SAVE_PLAYLIST', - key: key, + key: uri, name: name } } @@ -137,39 +137,39 @@ export function createPlaylist( scheme, name, is_public = false ){ return false } -export function removeTracksFromPlaylist( key, tracks_indexes ){ - switch( helpers.uriSource( key ) ){ +export function removeTracksFromPlaylist( uri, tracks_indexes ){ + switch( helpers.uriSource( uri ) ){ case 'spotify': return { type: 'SPOTIFY_REMOVE_PLAYLIST_TRACKS', - key: key, + key: uri, tracks_indexes: tracks_indexes } case 'm3u': return { type: 'MOPIDY_REMOVE_PLAYLIST_TRACKS', - key: key, + key: uri, tracks_indexes: tracks_indexes } } } -export function addTracksToPlaylist( key, tracks_uris ){ - switch( helpers.uriSource( key ) ){ +export function addTracksToPlaylist( uri, tracks_uris ){ + switch( helpers.uriSource( uri ) ){ case 'spotify': return { type: 'SPOTIFY_ADD_PLAYLIST_TRACKS', - key: key, + key: uri, tracks_uris: tracks_uris } case 'm3u': return { type: 'MOPIDY_ADD_PLAYLIST_TRACKS', - key: key, + key: uri, tracks_uris: tracks_uris } } diff --git a/src/js/services/ui/middleware.js b/src/js/services/ui/middleware.js index f7392dc6..87621811 100755 --- a/src/js/services/ui/middleware.js +++ b/src/js/services/ui/middleware.js @@ -78,7 +78,7 @@ const UIMiddleware = (function(){ case 'MOPIDY_SAVE_PLAYLIST': case 'SPOTIFY_SAVE_PLAYLIST': - ReactGA.event({ category: 'Playlist', action: 'Save', label: action.uri }) + ReactGA.event({ category: 'Playlist', action: 'Save', label: action.key }) next(action) break @@ -94,7 +94,7 @@ const UIMiddleware = (function(){ case 'MOPIDY_REORDER_PLAYLIST_TRACKS': case 'SPOTIFY_REORDER_PLAYLIST_TRACKS': - ReactGA.event({ category: 'Playlist', action: 'Reorder tracks', label: action.uri }) + ReactGA.event({ category: 'Playlist', action: 'Reorder tracks', label: action.key }) next(action) break diff --git a/src/js/views/discover/DiscoverCategory.js b/src/js/views/discover/DiscoverCategory.js index 6865e154..382928e6 100755 --- a/src/js/views/discover/DiscoverCategory.js +++ b/src/js/views/discover/DiscoverCategory.js @@ -16,15 +16,19 @@ class DiscoverCategory extends React.Component{ } componentDidMount(){ - this.props.spotifyActions.getCategory( this.props.params.id ); + this.loadCategory() } componentWillReceiveProps( nextProps ){ if( nextProps.params.id != this.props.params.id ){ - this.props.spotifyActions.getCategory( nextProps.params.id ); + this.loadCategory() } } + loadCategory(){ + if (!this.props.category || !this.props.category.playlists_uris) this.props.spotifyActions.getCategory( this.props.params.id ); + } + loadMore(){ if (this.props.category.playlists_more){ this.props.spotifyActions.getURL( this.props.category.playlists_more, 'SPOTIFY_CATEGORY_PLAYLISTS_LOADED', 'category:'+this.props.params.id );