diff --git a/src/components/playlisteditor/playlisteditor.ts b/src/components/playlisteditor/playlisteditor.ts
index 45b41e82d6..eeb4c97adc 100644
--- a/src/components/playlisteditor/playlisteditor.ts
+++ b/src/components/playlisteditor/playlisteditor.ts
@@ -149,6 +149,31 @@ function populatePlaylists(editorOptions: PlaylistEditorOptions, panel: DialogEl
recursive: true
})
.then(({ data }) => {
+ return Promise.all((data.Items || []).map(item => {
+ const playlist = {
+ item,
+ permissions: undefined
+ };
+
+ if (!item.Id) return playlist;
+
+ return getPlaylistsApi(api)
+ .getPlaylistUser({
+ playlistId: item.Id,
+ userId: apiClient.getCurrentUserId()
+ })
+ .then(({ data: permissions }) => ({
+ ...playlist,
+ permissions
+ }))
+ .catch((err) => {
+ console.warn('[PlaylistEditor] Failed to fetch playlist permissions', err);
+
+ return playlist;
+ });
+ }));
+ })
+ .then(playlists => {
let html = '';
if ((editorOptions.enableAddToPlayQueue !== false && playbackManager.isPlaying()) || SyncPlay?.Manager.isSyncPlayEnabled()) {
@@ -157,8 +182,10 @@ function populatePlaylists(editorOptions: PlaylistEditorOptions, panel: DialogEl
html += ``;
- html += data.Items?.map(i => {
- return ``;
+ html += playlists.map(({ item, permissions }) => {
+ if (!permissions?.CanEdit) return '';
+
+ return ``;
});
select.innerHTML = html;