From 8a41719a702b8cd0937ec6b50ce74ca5628f4a32 Mon Sep 17 00:00:00 2001 From: Julien Maille Date: Sun, 11 Jan 2026 23:14:44 +0100 Subject: [PATCH] fix(downloads): implement downloadTracks function and fix call site --- js/downloads.js | 21 +++++++++++++++++++++ js/ui-interactions.js | 3 ++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/js/downloads.js b/js/downloads.js index fdb29e3..afc8692 100644 --- a/js/downloads.js +++ b/js/downloads.js @@ -341,6 +341,27 @@ async function downloadTracksToZip( } } +export async function downloadTracks(tracks, api, quality, lyricsManager = null) { + const folderName = `Queue - ${new Date().toISOString().slice(0, 10)}`; + + const initResult = await initializeZipDownload(folderName, tracks.length >= 20); + if (!initResult) return; // User cancelled + const { zip, fileHandle } = initResult; + + const notification = createBulkDownloadNotification('queue', 'Queue', tracks.length); + + try { + await downloadTracksToZip(zip, tracks, folderName, api, quality, lyricsManager, notification); + await generateAndDownloadZip(zip, folderName, notification, tracks.length, fileHandle); + } catch (error) { + if (error.name === 'AbortError') { + return; + } + completeBulkDownload(notification, false, error.message); + throw error; + } +} + export async function downloadAlbumAsZip(album, tracks, api, quality, lyricsManager = null) { const releaseDateStr = album.releaseDate || (tracks[0]?.streamStartDate ? tracks[0].streamStartDate.split('T')[0] : ''); diff --git a/js/ui-interactions.js b/js/ui-interactions.js index 331e3b1..e1f5278 100644 --- a/js/ui-interactions.js +++ b/js/ui-interactions.js @@ -11,6 +11,7 @@ import { escapeHtml, } from './utils.js'; import { sidePanelManager } from './side-panel.js'; +import { downloadQualitySettings } from './storage.js'; export function initializeUIInteractions(player, api) { const sidebar = document.querySelector('.sidebar'); @@ -73,7 +74,7 @@ export function initializeUIInteractions(player, api) { if (downloadBtn) { downloadBtn.addEventListener('click', async () => { const { downloadTracks } = await import('./downloads.js'); - downloadTracks(currentQueue); + downloadTracks(currentQueue, api, downloadQualitySettings.getQuality()); }); }