fix(downloads): implement downloadTracks function and fix call site
This commit is contained in:
parent
3e03d4fbab
commit
8a41719a70
2 changed files with 23 additions and 1 deletions
|
|
@ -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) {
|
export async function downloadAlbumAsZip(album, tracks, api, quality, lyricsManager = null) {
|
||||||
const releaseDateStr =
|
const releaseDateStr =
|
||||||
album.releaseDate || (tracks[0]?.streamStartDate ? tracks[0].streamStartDate.split('T')[0] : '');
|
album.releaseDate || (tracks[0]?.streamStartDate ? tracks[0].streamStartDate.split('T')[0] : '');
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@ import {
|
||||||
escapeHtml,
|
escapeHtml,
|
||||||
} from './utils.js';
|
} from './utils.js';
|
||||||
import { sidePanelManager } from './side-panel.js';
|
import { sidePanelManager } from './side-panel.js';
|
||||||
|
import { downloadQualitySettings } from './storage.js';
|
||||||
|
|
||||||
export function initializeUIInteractions(player, api) {
|
export function initializeUIInteractions(player, api) {
|
||||||
const sidebar = document.querySelector('.sidebar');
|
const sidebar = document.querySelector('.sidebar');
|
||||||
|
|
@ -73,7 +74,7 @@ export function initializeUIInteractions(player, api) {
|
||||||
if (downloadBtn) {
|
if (downloadBtn) {
|
||||||
downloadBtn.addEventListener('click', async () => {
|
downloadBtn.addEventListener('click', async () => {
|
||||||
const { downloadTracks } = await import('./downloads.js');
|
const { downloadTracks } = await import('./downloads.js');
|
||||||
downloadTracks(currentQueue);
|
downloadTracks(currentQueue, api, downloadQualitySettings.getQuality());
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue