Gracefully handle a disabled m3u extension.

This commit is contained in:
Nick Steel 2016-02-04 01:33:45 +00:00
parent 8075bc3a0e
commit 97c8817335
3 changed files with 29 additions and 6 deletions

View File

@ -504,22 +504,35 @@ function getCurrentlyPlaying() {
return true; return true;
} }
function getUriSchemes() {
uriSchemes = {};
return mopidy.getUriSchemes().then(function(schemes) {
for (var i = 0; i < schemes.length; i++) {
uriSchemes[schemes[i].toLowerCase()] = true;
}
});
}
function getPlaylistByName(name, scheme, create) { function getPlaylistByName(name, scheme, create) {
var uri_scheme = scheme || ''; var uri_scheme = scheme || '';
var uri = ''; var uri = '';
if (uri_scheme && !uriSchemes[uri_scheme]) {
return Mopidy.when(false);
}
return mopidy.playlists.asList().catch(console.error.bind(console)).then(function(plists) { return mopidy.playlists.asList().catch(console.error.bind(console)).then(function(plists) {
for (var i = 0; i < plists.length; i++) { for (var i = 0; i < plists.length; i++) {
if ((plists[i].name === name) && (scheme === '' || getScheme(plists[i].uri) === scheme)) { if ((plists[i].name === name) && (uri_scheme === '' || getScheme(plists[i].uri) === uri_scheme)) {
return plists[i]; return plists[i];
} }
} }
if (create) { if (create) {
return mopidy.playlists.create({'name': name, 'uri_scheme': scheme}).done(function(plist) { return mopidy.playlists.create({'name': name, 'uri_scheme': uri_scheme}).done(function(plist) {
console.log("Created playlist '%s'", plist.name); console.log("Created playlist '%s'", plist.name);
return plist; return plist;
}); });
} }
console.log("Can't find playist '%s", name); console.log("Can't find playist '%s", name);
return Mopidy.when(false);
}); });
} }
@ -534,12 +547,15 @@ function getFavourites() {
return getPlaylistByName(STREAMS_PLAYLIST_NAME, return getPlaylistByName(STREAMS_PLAYLIST_NAME,
STREAMS_PLAYLIST_SCHEME, STREAMS_PLAYLIST_SCHEME,
true).then(function(playlist) { true).then(function(playlist) {
return getPlaylistFull(playlist.uri); if (playlist) {
return getPlaylistFull(playlist.uri);
}
return Mopidy.when(false);
}); });
} }
function addToFavourites(newTracks) { function addToFavourites(newTracks) {
getFavourites().then(function(favourites) { getFavourites().catch(console.error.bind(console)).then(function(favourites) {
if (favourites) { if (favourites) {
if (favourites.tracks) { if (favourites.tracks) {
Array.prototype.push.apply(favourites.tracks, newTracks) Array.prototype.push.apply(favourites.tracks, newTracks)
@ -591,12 +607,16 @@ function deleteFavourite(index) {
function showFavourites() { function showFavourites() {
$('#streamuristable').empty(); $('#streamuristable').empty();
getFavourites().then(function(favourites) { getFavourites().then(function(favourites) {
if (!favourites) {
return;
}
var tmp = ''; var tmp = '';
$.cookie.json = true; $.cookie.json = true;
if ($.cookie('streamUris')) { if ($.cookie('streamUris')) {
tmp = '<button class="btn" style="padding: 5px; width: 100%" type="button" onclick="return upgradeStreamUrisToFavourites();">Convert StreamUris</button>' tmp = '<button class="btn" style="padding: 5px; width: 100%" type="button" onclick="return upgradeStreamUrisToFavourites();">Convert StreamUris</button>'
} }
if (favourites && favourites.tracks) { if (favourites.tracks) {
var child = ''; var child = '';
for (var i = 0; i < favourites.tracks.length; i++) { for (var i = 0; i < favourites.tracks.length; i++) {
child = '<li><span class="ui-icon ui-icon-delete ui-icon-shadow" style="float:right; margin: .5em; margin-top: .8em;"><a href="#" onclick="return deleteFavourite(\'' + i + '\');">&nbsp;</a></span>' + child = '<li><span class="ui-icon ui-icon-delete ui-icon-shadow" style="float:right; margin: .5em; margin-top: .8em;"><a href="#" onclick="return deleteFavourite(\'' + i + '\');">&nbsp;</a></span>' +

View File

@ -36,6 +36,7 @@ var playlistslistScroll;
var STREAMS_PLAYLIST_NAME = '[Radio Streams]'; var STREAMS_PLAYLIST_NAME = '[Radio Streams]';
var STREAMS_PLAYLIST_SCHEME = 'm3u'; var STREAMS_PLAYLIST_SCHEME = 'm3u';
var uriSchemes = {};
//array of cached playlists (not only user-playlists, also search, artist, album-playlists) //array of cached playlists (not only user-playlists, also search, artist, album-playlists)
var playlists = {}; var playlists = {};

View File

@ -231,7 +231,9 @@ function initSocketevents() {
getCurrentPlaylist(); getCurrentPlaylist();
updateStatusOfAll(); updateStatusOfAll();
getPlaylists(); getPlaylists();
showFavourites(); getUriSchemes().then(function() {
showFavourites();
});
getBrowseDir(); getBrowseDir();
getSearchSchemes(); getSearchSchemes();
showLoading(false); showLoading(false);