diff --git a/README.rst b/README.rst
index 9cdb830..1f8918b 100644
--- a/README.rst
+++ b/README.rst
@@ -123,6 +123,7 @@ v2.4.0 (UNRELEASED)
- Now initializes the GUI properly, even if the user is offline or the Mopidy server cannot be reached.
- Fixed `Alarm Clock `_ detection.
- When browsing the library using the local 'File' extension, only playable audio files will have context menu icons.
+- Playlists will now list tracks even if they are no longer available in the library. (Fixes: `#226 `_).
v2.3.0 (2016-05-15)
-------------------
diff --git a/mopidy_musicbox_webclient/static/js/functionsvars.js b/mopidy_musicbox_webclient/static/js/functionsvars.js
index 9752563..78c237f 100644
--- a/mopidy_musicbox_webclient/static/js/functionsvars.js
+++ b/mopidy_musicbox_webclient/static/js/functionsvars.js
@@ -479,9 +479,9 @@ function showOffline (on) {
}
// from http://dzone.com/snippets/validate-url-regexp
-function validUri (str) {
+function validUri (uri) {
var regexp = /^(mms|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/
- return regexp.test(str)
+ return regexp.test(uri)
}
function validServiceUri (str) {
@@ -494,7 +494,7 @@ function getScheme (uri) {
function isPlayable (track) {
if (typeof track.type === 'undefined' || track.type === 'track') {
- if (getScheme(track.uri) === 'file') {
+ if (track.uri && getScheme(track.uri) === 'file') {
var ext = track.uri.split('.').pop().toLowerCase()
if ($.inArray(ext, audioExt) === -1) {
// Files must have the correct extension
diff --git a/mopidy_musicbox_webclient/static/js/process_ws.js b/mopidy_musicbox_webclient/static/js/process_ws.js
index fa4f192..70840a7 100644
--- a/mopidy_musicbox_webclient/static/js/process_ws.js
+++ b/mopidy_musicbox_webclient/static/js/process_ws.js
@@ -187,9 +187,11 @@ function processPlaylistItems (resultDict) {
return mopidy.library.lookup({'uris': trackUris}).then(function (tracks) {
// Transform from dict to list and cache result
var newplaylisturi = resultDict.uri
+ var track
playlists[newplaylisturi] = {'uri': newplaylisturi, 'tracks': []}
for (i = 0; i < trackUris.length; i++) {
- playlists[newplaylisturi].tracks.push(tracks[trackUris[i]][0])
+ track = tracks[trackUris[i]][0] || resultDict.items[i] // Fall back to using track Ref if lookup failed.
+ playlists[newplaylisturi].tracks.push(track)
}
showLoading(false)
return playlists[newplaylisturi].tracks
diff --git a/mopidy_musicbox_webclient/static/mb.appcache b/mopidy_musicbox_webclient/static/mb.appcache
index e0f4068..a34487f 100644
--- a/mopidy_musicbox_webclient/static/mb.appcache
+++ b/mopidy_musicbox_webclient/static/mb.appcache
@@ -1,6 +1,6 @@
CACHE MANIFEST
-# 2017-01-18:v2
+# 2017-02-04:v1
NETWORK:
*