diff --git a/mopidy_musicbox_webclient/static/js/controls.js b/mopidy_musicbox_webclient/static/js/controls.js index 53b7474..266e041 100644 --- a/mopidy_musicbox_webclient/static/js/controls.js +++ b/mopidy_musicbox_webclient/static/js/controls.js @@ -517,9 +517,11 @@ function getCurrentlyPlaying() { } function getPlaylistByName(name, scheme, create) { - return mopidy.playlists.filter({"name": name}).then(function(plists) { + var uri_scheme = scheme || ''; + var uri = ''; + return mopidy.playlists.asList().catch(console.error.bind(console)).then(function(plists) { for (var i = 0; i < plists.length; i++) { - if (!scheme || getScheme(plists[i].uri) == scheme) { + if ((plists[i].name === name) && (scheme === '' || getScheme(plists[i].uri) === scheme)) { return plists[i]; } } @@ -533,11 +535,18 @@ function getPlaylistByName(name, scheme, create) { }); } +function getPlaylistFull(uri) { + return mopidy.playlists.lookup(uri).then(function(pl) { + playlists[uri] = pl; + return pl; + }); +} + function getFavourites() { return getPlaylistByName(STREAMS_PLAYLIST_NAME, STREAMS_PLAYLIST_SCHEME, true).then(function(playlist) { - return playlist; + return getPlaylistFull(playlist.uri); }); } diff --git a/mopidy_musicbox_webclient/static/js/functionsvars.js b/mopidy_musicbox_webclient/static/js/functionsvars.js index 32753e4..a2ec0fd 100644 --- a/mopidy_musicbox_webclient/static/js/functionsvars.js +++ b/mopidy_musicbox_webclient/static/js/functionsvars.js @@ -425,7 +425,12 @@ function playlisttotable(pl, target, uri) { function getPlaylistTracks(uri) { if (playlists[uri] && playlists[uri].tracks) { - return playlists[uri].tracks; + return Mopidy.when(playlists[uri].tracks); + } else { + showLoading(true); + return mopidy.playlists.getItems(uri).then(function(refs) { + return processPlaylistItems({'uri':uri, 'items':refs}); + }, console.error); } } @@ -438,16 +443,15 @@ function getUris(tracks) { } function getTracksFromUri(uri, full_track_data) { - full_track_data = full_track_data || false; - var tracks = getPlaylistTracks(uri); - if (!tracks && customTracklists[uri]) { - tracks = customTracklists[uri]; + var returnTracksOrUris = function(tracks) { + return (full_track_data || false) ? tracks : getUris(tracks); } - if (full_track_data) { - return tracks; - } else { - return getUris(tracks); + if (customTracklists[uri]) { + return returnTracksOrUris(customTracklists[uri]); + } else if (playlists[uri] && playlists[uri].tracks) { + return returnTracksOrUris(playlists[uri].tracks); } + return []; } //convert time to human readable format diff --git a/mopidy_musicbox_webclient/static/js/library.js b/mopidy_musicbox_webclient/static/js/library.js index 78d4b60..74b29d5 100644 --- a/mopidy_musicbox_webclient/static/js/library.js +++ b/mopidy_musicbox_webclient/static/js/library.js @@ -250,14 +250,10 @@ function togglePlaylists() { function showTracklist(uri) { $(PLAYLIST_TABLE).empty(); togglePlaylists(); - var tracks = getPlaylistTracks(uri); - //load from cache - if (tracks) { + var tracks = getPlaylistTracks(uri).then(function(tracks) { resultsToTables(tracks, PLAYLIST_TABLE, uri); - return; - } else { - showLoading(true); - } + }); + showLoading(false); updatePlayIcons(uri); $('#playlistslist li a').each(function() { $(this).removeClass("playlistactive"); @@ -266,10 +262,6 @@ function showTracklist(uri) { } }); // scrollToTracklist(); - //lookup recent tracklist - mopidy.playlists.getItems(uri).then(function(refs) { - processPlaylistItems({'uri':uri, 'items':refs}); - }, console.error); return false; } diff --git a/mopidy_musicbox_webclient/static/js/process_ws.js b/mopidy_musicbox_webclient/static/js/process_ws.js index 1202c28..fe14d6b 100644 --- a/mopidy_musicbox_webclient/static/js/process_ws.js +++ b/mopidy_musicbox_webclient/static/js/process_ws.js @@ -199,10 +199,10 @@ function processPlaylistItems(resultDict) { for (i = 0; i < trackUris.length; i++) { playlists[newplaylisturi].tracks.push(tracks[trackUris[i]][0]); } - resultsToTables(playlists[newplaylisturi].tracks, PLAYLIST_TABLE, newplaylisturi); showLoading(false); + return playlists[newplaylisturi].tracks; }); - + return false; } /********************************************************