diff --git a/js/app.js b/js/app.js index 56d5840..ddef513 100644 --- a/js/app.js +++ b/js/app.js @@ -301,10 +301,18 @@ document.addEventListener('DOMContentLoaded', async () => { try { let playlist, tracks; - const userPlaylist = await db.getPlaylist(playlistId); + let userPlaylist = await db.getPlaylist(playlistId); + + if (!userPlaylist) { + try { + userPlaylist = await syncManager.getPublicPlaylist(playlistId); + } catch (e) { + // Not a public playlist + } + } if (userPlaylist) { - playlist = { ...userPlaylist, title: userPlaylist.name }; + playlist = { ...userPlaylist, title: userPlaylist.name || userPlaylist.title }; tracks = userPlaylist.tracks || []; } else { const data = await api.getPlaylist(playlistId); diff --git a/js/events.js b/js/events.js index e6dd7c2..94ad436 100644 --- a/js/events.js +++ b/js/events.js @@ -399,8 +399,15 @@ export async function handleTrackAction(action, item, player, api, lyricsManager const data = await api.getPlaylist(item.uuid); tracks = data.tracks; } else if (type === 'user-playlist') { - const playlist = await db.getPlaylist(item.id); - tracks = playlist ? playlist.tracks : []; + let playlist = await db.getPlaylist(item.id); + if (!playlist) { + try { + playlist = await syncManager.getPublicPlaylist(item.id); + } catch (e) { + // Ignore + } + } + tracks = playlist ? playlist.tracks : (item.tracks || []); } if (tracks.length > 0) {