@ -3691,7 +3735,7 @@ async function testConnection(service) {
}
asyncfunctionclearQuarantine(){
if(!confirm('Delete all files in the quarantine folder? This cannot be undone.'))return;
if(!awaitshowConfirmDialog({title:'Clear Quarantine',message:'Delete all files in the quarantine folder? This cannot be undone.',confirmText:'Delete',destructive:true}))return;
if(!confirm(`Revoke API key "${label}"? Any apps using this key will stop working.`))return;
if(!awaitshowConfirmDialog({title:'Revoke API Key',message:`Revoke API key "${label}"? Any apps using this key will stop working.`,confirmText:'Revoke',destructive:true}))return;
if(!confirm('This will remove all tracks from the wishlist that already exist in your library. Continue?')){
if(!awaitshowConfirmDialog({title:'Cleanup Wishlist',message:'This will remove all tracks from the wishlist that already exist in your library. Continue?'})){
return;
}
@ -8503,7 +8547,7 @@ async function cleanupWishlistOverview() {
asyncfunctionclearEntireWishlist(){
console.log('🗑️ clearEntireWishlist() called');
if(!confirm('⚠️ WARNING: This will permanently delete ALL tracks from your wishlist.\n\nThis action cannot be undone.\n\nAre you sure you want to continue?')){
if(!awaitshowConfirmDialog({title:'Clear Wishlist',message:'WARNING: This will permanently delete ALL tracks from your wishlist.\n\nThis action cannot be undone.\n\nAre you sure you want to continue?',confirmText:'Clear All',destructive:true})){
console.log('User cancelled confirmation');
return;
}
@ -10015,7 +10059,7 @@ function _renderCandidatesModal(data) {
if(!confirm(`Download this file as "${trackName}"?\n\n${candidate.filename?.split(/[/\\]/).pop()||'Unknown file'}\nfrom ${candidate.username||'Unknown user'}`))return;
if(!awaitshowConfirmDialog({title:'Download File',message:`Download this file as "${trackName}"?\n\n${candidate.filename?.split(/[/\\]/).pop()||'Unknown file'}\nfrom ${candidate.username||'Unknown user'}`,confirmText:'Download'}))return;
@ -11526,7 +11570,7 @@ async function clearFinishedDownloads() {
}
asyncfunctioncancelAllDownloads(){
if(!confirm('Cancel ALL active downloads and clear the transfer list? This cannot be undone.')){
if(!awaitshowConfirmDialog({title:'Cancel All Downloads',message:'Cancel ALL active downloads and clear the transfer list? This cannot be undone.',confirmText:'Cancel All',destructive:true})){
return;
}
@ -15344,7 +15388,7 @@ function downloadBackup(filename) {
}
asyncfunctionrestoreBackup(filename){
if(!confirm(`Restore database from "${filename}"?\n\nA safety backup of the current database will be created first.`))return;
if(!awaitshowConfirmDialog({title:'Restore Backup',message:`Restore database from "${filename}"?\n\nA safety backup of the current database will be created first.`,confirmText:'Restore'}))return;
@ -15360,7 +15404,7 @@ async function restoreBackup(filename) {
}
asyncfunctiondeleteBackup(filename){
if(!confirm(`Delete backup "${filename}"? This cannot be undone.`))return;
if(!awaitshowConfirmDialog({title:'Delete Backup',message:`Delete backup "${filename}"? This cannot be undone.`,confirmText:'Delete',destructive:true}))return;
@ -19159,7 +19203,7 @@ async function handleDbUpdateButtonClick() {
if(isFullRefresh){
// Replicates the QMessageBox confirmation from the GUI
constconfirmed=confirm("⚠️ Full Refresh Warning!\n\nThis will clear and rebuild the database for the active server. It can take a long time. Are you sure you want to proceed?");
constconfirmed=awaitshowConfirmDialog({title:'Full Refresh',message:'This will clear and rebuild the database for the active server. It can take a long time.\n\nAre you sure you want to proceed?',confirmText:'Proceed'});
if(!confirmed)return;
}
@ -19275,13 +19319,10 @@ async function handleWishlistButtonClick() {
asyncfunctioncleanupWishlist(playlistId){
try{
// Show information dialog
constconfirmed=confirm(
"Cleanup Wishlist\n\n"+
"This will check all wishlist tracks against your music library and automatically remove "+
"any tracks that already exist in your database.\n\n"+
"This is a safe operation that only removes tracks you already have. "+
"Continue with cleanup?"
);
constconfirmed=awaitshowConfirmDialog({
title:'Cleanup Wishlist',
message:'This will check all wishlist tracks against your music library and automatically remove any tracks that already exist in your database.\n\nThis is a safe operation that only removes tracks you already have. Continue with cleanup?'
});
if(!confirmed){
return;
@ -19340,12 +19381,12 @@ async function cleanupWishlist(playlistId) {
asyncfunctionclearWishlist(playlistId){
try{
// Show confirmation dialog
constconfirmed=confirm(
"Clear Wishlist\n\n"+
"Are you sure you want to clear the entire wishlist?\n\n"+
"This will permanently remove all failed tracks from the wishlist. "+
"This action cannot be undone."
);
constconfirmed=awaitshowConfirmDialog({
title:'Clear Wishlist',
message:'Are you sure you want to clear the entire wishlist?\n\nThis will permanently remove all failed tracks from the wishlist. This action cannot be undone.',
confirmText:'Clear All',
destructive:true
});
if(!confirmed){
return;
@ -29615,7 +29656,7 @@ async function batchRemoveFromWatchlist() {
if(checked.length===0)return;
constcount=checked.length;
if(!confirm(`Remove ${count} artist${count!==1?'s':''} from your watchlist?`))return;
if(!awaitshowConfirmDialog({title:'Remove Artists',message:`Remove ${count} artist${count!==1?'s':''} from your watchlist?`,confirmText:'Remove',destructive:true}))return;
if(!confirm(`Clear discovery data for "${name}"? You can re-discover afterwards to get updated cover art.`))return;
if(!awaitshowConfirmDialog({title:'Clear Discovery Data',message:`Clear discovery data for "${name}"? You can re-discover afterwards to get updated cover art.`}))return;