diff --git a/src/electron/ipc/download/ChartDownload.ts b/src/electron/ipc/download/ChartDownload.ts index 7670ed0..c938cfd 100644 --- a/src/electron/ipc/download/ChartDownload.ts +++ b/src/electron/ipc/download/ChartDownload.ts @@ -41,6 +41,7 @@ export class ChartDownload { /** If this chart download needs to be retried */ get hasFailed() { return this._hasFailed } get isArchive() { return this.data.driveData.isArchive } + get hash() { return this.data.driveData.filesHash } constructor(public versionID: number, private data: NewDownload) { this.updateGUI('', 'Waiting for other downloads to finish...', 'good') diff --git a/src/electron/ipc/download/DownloadHandler.ts b/src/electron/ipc/download/DownloadHandler.ts index c047be1..8457bb3 100644 --- a/src/electron/ipc/download/DownloadHandler.ts +++ b/src/electron/ipc/download/DownloadHandler.ts @@ -19,6 +19,11 @@ class DownloadHandler implements IPCEmitHandler<'download'> { } private addDownload(data: Download) { + const filesHash = data.data.driveData.filesHash + if (this.currentDownload?.hash == filesHash || this.downloadQueue.isDownloadingLink(filesHash)) { + return + } + const newDownload = new ChartDownload(data.versionID, data.data) this.addDownloadEventListeners(newDownload) if (this.currentDownload == undefined) { diff --git a/src/electron/ipc/download/DownloadQueue.ts b/src/electron/ipc/download/DownloadQueue.ts index ba8960d..fc753e9 100644 --- a/src/electron/ipc/download/DownloadQueue.ts +++ b/src/electron/ipc/download/DownloadQueue.ts @@ -6,6 +6,10 @@ export class DownloadQueue { downloadQueue: ChartDownload[] = [] + isDownloadingLink(filesHash: string) { + return this.downloadQueue.some(download => download.hash == filesHash) + } + isEmpty() { return this.downloadQueue.length == 0 }