Playlist and Users data storage overhaul

This commit is contained in:
James Barnsley
2018-08-31 16:04:55 +12:00
parent 02ab0616fa
commit dbb5effbb9
21 changed files with 15035 additions and 11241 deletions

View File

@ -357,6 +357,14 @@ const CoreMiddleware = (function(){
case 'LOAD_TRACK':
if (
!action.force_reload &&
store.getState().core.tracks[action.uri]){
console.info('Loading "'+action.uri+'" from index');
break;
}
switch (helpers.uriSource(action.uri)){
case 'spotify':
store.dispatch(spotifyActions.getTrack(action.uri));
@ -374,6 +382,15 @@ const CoreMiddleware = (function(){
break;
case 'LOAD_ALBUM':
if (
!action.force_reload &&
store.getState().core.albums[action.uri] &&
store.getState().core.albums[action.uri].tracks_uris){
console.info('Loading "'+action.uri+'" from index');
break;
}
switch (helpers.uriSource(action.uri)){
case 'spotify':
store.dispatch(spotifyActions.getAlbum(action.uri));
@ -391,6 +408,16 @@ const CoreMiddleware = (function(){
break;
case 'LOAD_ARTIST':
if (
!action.force_reload &&
store.getState().core.artists[action.uri] &&
store.getState().core.artists[action.uri].albums_uris &&
store.getState().core.artists[action.uri].tracks_uris){
console.info('Loading "'+action.uri+'" from index');
break;
}
switch (helpers.uriSource(action.uri)){
case 'spotify':
store.dispatch(spotifyActions.getArtist(action.uri, true));
@ -408,6 +435,15 @@ const CoreMiddleware = (function(){
break;
case 'LOAD_PLAYLIST':
if (
!action.force_reload &&
store.getState().core.playlists[action.uri] &&
store.getState().core.playlists[action.uri].tracks_uris){
console.info('Loading "'+action.uri+'" from index');
break;
}
switch (helpers.uriSource(action.uri)){
case 'spotify':
store.dispatch(spotifyActions.getPlaylist(action.uri));
@ -424,6 +460,46 @@ const CoreMiddleware = (function(){
next(action);
break;
case 'LOAD_USER':
console.log(action);
if (
!action.force_reload &&
store.getState().core.playlists[action.uri] &&
store.getState().core.playlists[action.uri].albums_uris ){
console.info('Loading "'+action.uri+'" from index');
break;
}
switch (helpers.uriSource(action.uri)){
case 'spotify':
store.dispatch(spotifyActions.getUser(action.uri));
store.dispatch(spotifyActions.following(action.uri));
break;
default:
// No Mopidy mechanism for users
break;
}
next(action);
break;
case 'LOAD_USER_PLAYLISTS':
switch (helpers.uriSource(action.uri)){
case 'spotify':
store.dispatch(spotifyActions.getUserPlaylists(action.uri));
break;
default:
// No Mopidy mechanism for users
break;
}
next(action);
break;
/**
* Index actions
@ -537,7 +613,9 @@ const CoreMiddleware = (function(){
var playlists_loaded = [];
var tracks_loaded = [];
action.playlists.forEach(playlist => {
for (var playlist of action.playlists){
playlist = helpers.formatPlaylist(playlist);
// Detect editability
switch (helpers.uriSource(playlist.uri)){
@ -567,7 +645,7 @@ const CoreMiddleware = (function(){
// Update index
playlists_loaded.push(playlist);
});
}
action.playlists = playlists_loaded;
@ -581,20 +659,25 @@ const CoreMiddleware = (function(){
var users_index = Object.assign({}, core.users);
var users_loaded = [];
action.users.forEach(user => {
for (var user of action.users){
if (users_index[user.uri]){
user = Object.assign({}, users_index[user.uri], user);
}
users_loaded.push(user);
});
}
action.users = users_loaded;
next(action);
break;
case 'USER_PLAYLISTS_LOADED':
store.dispatch(coreActions.playlistsLoaded(action.playlists));
next(action);
break;
/**
* Loaded more linked assets
* Often fired during lazy-loading or async asset grabbing.