fixed offline mode issue

This commit is contained in:
Dmitri 2026-04-14 19:43:54 +04:00
parent 556a0c0700
commit ff36f318fc

View File

@ -242,7 +242,8 @@ class DownloadManagerClass {
const job = this.queue.shift();
if (!job) break;
this.activeDownloads.set(job.url, job);
// Use storageKey as Map key (stable) instead of url (can change on fallback)
this.activeDownloads.set(job.storageKey, job);
this.downloadAsset(job);
}
@ -466,7 +467,7 @@ class DownloadManagerClass {
job.reject?.(error instanceof Error ? error : new Error(errorMessage));
}
} finally {
this.activeDownloads.delete(job.url);
this.activeDownloads.delete(job.storageKey);
downloadEventBus.emitQueueUpdate();
this.processQueue();
}
@ -507,12 +508,12 @@ class DownloadManagerClass {
* Cancel a specific download
*/
cancelJob(jobId: string): void {
// Check active downloads
// Check active downloads (keyed by storageKey)
const entries = Array.from(this.activeDownloads.entries());
for (const [url, job] of entries) {
for (const [storageKey, job] of entries) {
if (job.id === jobId) {
job.abortController?.abort();
this.activeDownloads.delete(url);
this.activeDownloads.delete(storageKey);
OfflineDbManager.removeFromQueue(jobId);
downloadEventBus.emitQueueUpdate();
return;
@ -532,12 +533,12 @@ class DownloadManagerClass {
* Cancel all downloads for a project
*/
cancelProjectDownloads(projectId: string): void {
// Cancel active downloads
// Cancel active downloads (keyed by storageKey)
const entries = Array.from(this.activeDownloads.entries());
for (const [url, job] of entries) {
for (const [storageKey, job] of entries) {
if (job.projectId === projectId) {
job.abortController?.abort();
this.activeDownloads.delete(url);
this.activeDownloads.delete(storageKey);
}
}