fix(downloads): implement downloadTracks function and fix call site

This commit is contained in:
Julien Maille 2026-01-11 23:14:44 +01:00
parent 3e03d4fbab
commit 8a41719a70
2 changed files with 23 additions and 1 deletions

View file

@ -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] : '');

View file

@ -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());
});
}