mirror of
https://github.com/Myxelium/Bridge-Multi.git
synced 2026-04-11 14:19:38 +00:00
56 lines
1.6 KiB
TypeScript
56 lines
1.6 KiB
TypeScript
import { ChangeDetectorRef, Component } from '@angular/core'
|
|
|
|
import { DownloadProgress } from '../../../../../../src-shared/interfaces/download.interface'
|
|
import { DownloadService } from '../../../../core/services/download.service'
|
|
|
|
@Component({
|
|
selector: 'app-downloads-modal',
|
|
templateUrl: './downloads-modal.component.html',
|
|
styleUrls: ['./downloads-modal.component.scss'],
|
|
})
|
|
export class DownloadsModalComponent {
|
|
|
|
downloads: DownloadProgress[] = []
|
|
|
|
constructor(private downloadService: DownloadService, ref: ChangeDetectorRef) {
|
|
window.electron.on.queueUpdated(order => {
|
|
this.downloads.sort((a, b) => order.indexOf(a.versionID) - order.indexOf(b.versionID))
|
|
})
|
|
|
|
downloadService.onDownloadUpdated(download => {
|
|
const index = this.downloads.findIndex(thisDownload => thisDownload.versionID === download.versionID)
|
|
if (download.type === 'cancel') {
|
|
this.downloads = this.downloads.filter(thisDownload => thisDownload.versionID !== download.versionID)
|
|
} else if (index === -1) {
|
|
this.downloads.push(download)
|
|
} else {
|
|
this.downloads[index] = download
|
|
}
|
|
ref.detectChanges()
|
|
})
|
|
}
|
|
|
|
trackByVersionID(_index: number, item: DownloadProgress) {
|
|
return item.versionID
|
|
}
|
|
|
|
cancelDownload(versionID: number) {
|
|
this.downloadService.cancelDownload(versionID)
|
|
}
|
|
|
|
retryDownload(versionID: number) {
|
|
this.downloadService.retryDownload(versionID)
|
|
}
|
|
|
|
getBackgroundColor(download: DownloadProgress) {
|
|
switch (download.type) {
|
|
case 'error': return '#a63a3a'
|
|
default: return undefined
|
|
}
|
|
}
|
|
|
|
showFile(filepath: string) {
|
|
window.electron.emit.showFile(filepath)
|
|
}
|
|
}
|