fix(queue): reset interrupted downloads and clear current job on load

This commit is contained in:
2025-10-05 01:25:42 -04:00
parent cba49ce411
commit 17b6f7958e
2 changed files with 27 additions and 7 deletions

View File

@@ -122,9 +122,6 @@ export class DeezerQueueManager {
this.abortController = new AbortController(); this.abortController = new AbortController();
console.log('[DeezerQueueManager] Starting queue processor'); console.log('[DeezerQueueManager] Starting queue processor');
// Clear any stale currentJob from previous session
await setCurrentJob(null);
try { try {
await this.processQueue(); await this.processQueue();
} catch (error) { } catch (error) {

View File

@@ -50,11 +50,34 @@ export async function loadDownloadQueue(): Promise<void> {
const queue = await store.get<Record<string, QueueItem>>('queue'); const queue = await store.get<Record<string, QueueItem>>('queue');
const currentJob = await store.get<string>('currentJob'); const currentJob = await store.get<string>('currentJob');
downloadQueue.set({ // Reset any items stuck in 'downloading' state from previous session
const cleanedQueue = { ...(queue ?? {}) };
let resetCount = 0;
for (const id in cleanedQueue) {
const item = cleanedQueue[id];
if (item && item.status === 'downloading') {
cleanedQueue[id] = {
...item,
status: 'queued',
progress: 0,
currentTrack: undefined
};
resetCount++;
}
}
if (resetCount > 0) {
console.log(`[DownloadQueue] Reset ${resetCount} interrupted download(s)`);
}
const newState = {
queueOrder: queueOrder ?? [], queueOrder: queueOrder ?? [],
queue: queue ?? {}, queue: cleanedQueue,
currentJob: currentJob ?? null currentJob: null // Always clear currentJob on load
}); };
downloadQueue.set(newState);
await saveQueue(newState);
} }
// Save queue to disk // Save queue to disk