feat: add delete playlist button to edit modal

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
HoneyandClaude Sonnet 4.6 committed 2026-04-28 09:13:04 +02:00
1 parent b575e38726
commit 8c83d4d598
4 files changed
+22 -4

No files matched your search

+5 -2
View File
@@ -577,8 +577,11 @@
</div> </div>
</div> </div>
<div class="edit-pl-footer"> <div class="edit-pl-footer">
<button class="edit-pl-btn-cancel" onclick="closeEditPlModal()">Abbrechen</button> <button class="edit-pl-btn-delete" onclick="deletePlaylist()">Löschen</button>
<button class="edit-pl-btn-save" onclick="saveEditPlaylist()">Speichern</button> <div style="display:flex;gap:10px">
<button class="edit-pl-btn-cancel" onclick="closeEditPlModal()">Abbrechen</button>
<button class="edit-pl-btn-save" onclick="saveEditPlaylist()">Speichern</button>
</div>
</div> </div>
</div> </div>
</div> </div>
+2 -1
View File
@@ -28,6 +28,7 @@ import {
createPlaylistPrompt, showSongInfo, closeInfoModal, openDlModal, closeDlModal, createPlaylistPrompt, showSongInfo, closeInfoModal, openDlModal, closeDlModal,
selectDlType, executeDownload, executeSpotifyDownload, openEditPlModal, closeEditPlModal, selectDlType, executeDownload, executeSpotifyDownload, openEditPlModal, closeEditPlModal,
saveEditPlaylist, editPlUploadCover, editPlCoverSelected, editPlRemoveCover, saveEditPlaylist, editPlUploadCover, editPlCoverSelected, editPlRemoveCover,
deletePlaylist,
toggleMobileSearch, closeMobileSearch, switchSetupTab, toggleMobileSearch, closeMobileSearch, switchSetupTab,
toggleNotifPanel, deleteNotif, clearNotifs, initNotifBell, toggleNotifPanel, deleteNotif, clearNotifs, initNotifBell,
} from './ui.js'; } from './ui.js';
@@ -235,7 +236,7 @@ Object.assign(window, {
showSongInfo, closeInfoModal, showSongInfo, closeInfoModal,
openDlModal, closeDlModal, selectDlType, executeDownload, openDlModal, closeDlModal, selectDlType, executeDownload,
openEditPlModal, closeEditPlModal, saveEditPlaylist, openEditPlModal, closeEditPlModal, saveEditPlaylist,
editPlUploadCover, editPlCoverSelected, editPlRemoveCover, editPlUploadCover, editPlCoverSelected, editPlRemoveCover, deletePlaylist,
toggleMobileSearch, closeMobileSearch, switchSetupTab, toggleMobileSearch, closeMobileSearch, switchSetupTab,
toggleNotifPanel, deleteNotif, clearNotifs, toggleNotifPanel, deleteNotif, clearNotifs,
// App // App
+12
View File
@@ -572,3 +572,15 @@ export async function editPlRemoveCover() {
} catch(e) { S._ndToken = null; toast('Fehler: '+e.message); } } catch(e) { S._ndToken = null; toast('Fehler: '+e.message); }
} }
export async function deletePlaylist() {
const pl = S._currentPlaylist;
if (!pl) return;
if (!confirm(`Playlist "${pl.name}" wirklich löschen?`)) return;
try {
await api('deletePlaylist', `&id=${pl.id}`);
closeEditPlModal();
toast(`🗑 "${pl.name}" gelöscht`);
navigate('playlists');
} catch(e) { toast('Fehler beim Löschen: ' + e.message); }
}
+3 -1
View File
@@ -401,7 +401,9 @@ nav{flex:1;overflow-y:auto;padding:4px 10px}
.edit-pl-textarea{resize:vertical;min-height:72px;line-height:1.5} .edit-pl-textarea{resize:vertical;min-height:72px;line-height:1.5}
.edit-pl-toggle-row{display:flex;align-items:center;justify-content:space-between;padding:4px 0} .edit-pl-toggle-row{display:flex;align-items:center;justify-content:space-between;padding:4px 0}
.edit-pl-toggle-row span{font-size:14px;font-weight:500} .edit-pl-toggle-row span{font-size:14px;font-weight:500}
.edit-pl-footer{display:flex;justify-content:flex-end;gap:10px;padding:16px 24px;border-top:1px solid var(--border)} .edit-pl-footer{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:16px 24px;border-top:1px solid var(--border)}
.edit-pl-btn-delete{padding:10px 18px;border-radius:9px;border:1px solid var(--danger);background:none;color:var(--danger);font-family:var(--font);font-size:14px;font-weight:600;cursor:pointer;transition:background .15s,color .15s}
.edit-pl-btn-delete:hover{background:rgba(224,85,85,.12)}
.edit-pl-btn-cancel{padding:10px 20px;border-radius:9px;border:none;background:none;color:var(--text2);font-family:var(--font);font-size:14px;font-weight:600;cursor:pointer;transition:color .15s} .edit-pl-btn-cancel{padding:10px 20px;border-radius:9px;border:none;background:none;color:var(--text2);font-family:var(--font);font-size:14px;font-weight:600;cursor:pointer;transition:color .15s}
.edit-pl-btn-cancel:hover{color:var(--text)} .edit-pl-btn-cancel:hover{color:var(--text)}
.edit-pl-btn-save{padding:10px 22px;border-radius:9px;border:none;background:var(--accent);color:#000;font-family:var(--font);font-size:14px;font-weight:700;cursor:pointer;transition:opacity .15s} .edit-pl-btn-save{padding:10px 22px;border-radius:9px;border:none;background:var(--accent);color:#000;font-family:var(--font);font-size:14px;font-weight:700;cursor:pointer;transition:opacity .15s}