Tidied up handling when add by playlist fails.

Constant to define mbw URI scheme and get scheme helper.
This commit is contained in:
Nick Steel 2015-11-09 22:25:35 +00:00
parent 92fe64ba1d
commit 4087cf9379
3 changed files with 33 additions and 32 deletions

View File

@ -121,20 +121,20 @@ function playTrack(action) {
*/
function playTrackByUri(track_uri, playlist_uri) {
function findAndPlayTrack(tltracks) {
// console.log('fa', tltracks, track_uri);
if (tltracks == []) { return;}
// Find track that was selected
for (var selected = 0; selected < tltracks.length; selected++) {
if (tltracks[selected].track.uri == track_uri) {
mopidy.playback.play(tltracks[selected]);
return;
if (tltracks.length > 0) {
// Find track that was selected
for (var selected = 0; selected < tltracks.length; selected++) {
if (tltracks[selected].track.uri == track_uri) {
mopidy.playback.play(tltracks[selected]);
return;
}
}
}
console.log('Failed to play selected track ', track_uri);
console.error('Failed to find and play selected track ', track_uri);
return;
}
// Stop directly, for user feedback
mopidy.playback.stop();
mopidy.tracklist.clear();
//this is deprecated, remove when popuptracks is removed completly
@ -144,19 +144,15 @@ function playTrackByUri(track_uri, playlist_uri) {
toast('Loading...');
var func;
func = mopidy.tracklist.add(null, null, playlist_uri);
func.then(
function(tltracks) {
//check if tltracks is filled, some backends (gmusic, m3u) do not support adding by uri, it seems
if (tltracks.length == 0) {
console.log('failed to add by playlist, falling back');
var tracks = getTracksFromUri(playlist_uri);
mopidy.tracklist.add(null, null, null, tracks).then(findAndPlayTrack);
}
mopidy.tracklist.add(null, null, playlist_uri).then(function(tltracks) {
// Can fail for all sorts of reasons. If so, just add individually.
if (tltracks.length == 0) {
var trackUris = getTracksFromUri(playlist_uri, false);
mopidy.tracklist.add(null, null, null, trackUris).then(findAndPlayTrack);
} else {
findAndPlayTrack(tltracks);
}
).then(getCurrentPlaylist()); // Updates some state
});
return false;
}

View File

@ -60,6 +60,8 @@ SEARCH_ALBUM_TABLE = '#albumresulttable';
SEARCH_ARTIST_TABLE = '#artistresulttable';
SEARCH_TRACK_TABLE = '#trackresulttable';
URI_SCHEME = 'mbw';
PLAY_NOW = 0;
PLAY_NEXT = 1;
ADD_THIS_BOTTOM = 2;
@ -503,15 +505,18 @@ function validServiceUri(str) {
return validUri(str) || isServiceUri(str);
}
function getSchemeFromUri(uri) {
return uri.split(":")[0].toLowerCase();
}
function isStreamUri(uri) {
var uriSplit = uri.split(":");
var a = validUri(uri);
var b = radioExtensionsList.indexOf(uriSplit[0].toLowerCase()) >= 0;
var b = radioExtensionsList.indexOf(getSchemeFromUri(uri)) >= 0;
return a || b;
}
function getMediaClass(uri) {
var uriSplit = uri.split(":")[0].toLowerCase();
var uriSplit = getSchemeFromUri(uri);
for (var i = 0; i < uriClassList.length; i++) {
if (uriSplit == uriClassList[i][0]) {
return "fa " + uriClassList[i][1];
@ -521,7 +526,7 @@ function getMediaClass(uri) {
}
function getMediaHuman(uri) {
var uriSplit = uri.split(":")[0].toLowerCase();
var uriSplit = getSchemeFromUri(uri);
for (var i = 0; i < uriHumanList.length; i++) {
if (uriSplit == uriHumanList[i][0]) {
return uriHumanList[i][1];
@ -531,7 +536,7 @@ function getMediaHuman(uri) {
}
function isServiceUri(uri) {
var uriSplit = uri.split(":")[0].toLowerCase();
var uriSplit = getSchemeFromUri(uri);
var retVal = false;
for (var i = 0; i < uriClassList.length; i++) {

View File

@ -23,10 +23,10 @@ function initSearch() {
document.activeElement.blur();
$("input").blur();
delete customTracklists['mbw:allresultscache'];
delete customTracklists['mbw:artistresultscache'];
delete customTracklists['mbw:albumresultscache'];
delete customTracklists['mbw:trackresultscache'];
delete customTracklists[URI_SCHEME+':allresultscache'];
delete customTracklists[URI_SCHEME+':artistresultscache'];
delete customTracklists[URI_SCHEME+':albumresultscache'];
delete customTracklists[URI_SCHEME+':trackresultscache'];
$("#searchresults").hide();
if (searchService != 'all') {
@ -113,7 +113,7 @@ function processSearchResults(resultArr) {
customTracklists['mbw:trackresultscache'] = results.tracks;
customTracklists[URI_SCHEME+':trackresultscache'] = results.tracks;
if (emptyResult) {
toast('No results');
@ -196,8 +196,8 @@ function processSearchResults(resultArr) {
$('#expandsearch').show();
// Track results
// playlisttotable(results.tracks, SEARCH_TRACK_TABLE, 'mbw:trackresultscache');
resultsToTables(results.tracks, SEARCH_TRACK_TABLE, 'mbw:trackresultscache');
// playlisttotable(results.tracks, SEARCH_TRACK_TABLE, URI_SCHEME+':trackresultscache');
resultsToTables(results.tracks, SEARCH_TRACK_TABLE, URI_SCHEME+':trackresultscache');
showLoading(false);
}