UNPKG

@c8y/ngx-components

Version:

Angular modules for Cumulocity IoT applications

101 lines (96 loc) 5.26 kB
import * as i0 from '@angular/core'; import { Injectable, NgModule } from '@angular/core'; import * as i1 from '@angular/router'; import { NavigationEnd, RouterModule } from '@angular/router'; import { filter, map } from 'rxjs/operators'; import * as i2 from '@c8y/client'; import { gettext } from '@c8y/ngx-components/gettext'; import * as i3 from '@c8y/ngx-components'; import { Status, CommonModule } from '@c8y/ngx-components'; import { saveAs } from 'file-saver'; import { isUndefined } from 'lodash-es'; import * as i4 from '@ngx-translate/core'; class BinaryFileDownloadService { constructor(router, route, inventoryService, alertService, modalService, translate, inventoryBinary) { this.router = router; this.route = route; this.inventoryService = inventoryService; this.alertService = alertService; this.modalService = modalService; this.translate = translate; this.inventoryBinary = inventoryBinary; } run() { this.router.events .pipe(filter(event => { return event instanceof NavigationEnd && this.route.snapshot.queryParams.download; }), map(() => this.route.snapshot.queryParams.download)) .subscribe(async (downloadId) => { try { const { data } = await this.inventoryService.detail(downloadId); if (!isUndefined(data.c8y_IsBinary)) { this.showDownloadModal(data); } else { const alertMessage = this.translate.instant(gettext('Could not download the file: object with ID "{{ id }}" is not a valid binary.'), { id: data.id }); this.alertService.danger(alertMessage); } } catch (ex) { this.alertService.addServerFailure(ex); } }); } async showDownloadModal(binaryMo) { try { const modalBody = this.translate.instant(gettext('You are about to download file "{{ fileName }}". Do you want to proceed?'), { fileName: binaryMo.name }); await this.modalService.confirm(gettext('File download'), modalBody, Status.INFO, { ok: gettext('Download') }); const arrayBuffer = await this.getArrayBuffer(binaryMo.id); const fileBinary = new File([arrayBuffer], binaryMo.name, { type: binaryMo.contentType }); saveAs(fileBinary); } catch (e) { // empty body :( console.log({ e }); } } async getArrayBuffer(binaryId) { let arrayBuffer; try { const res = await this.inventoryBinary.download(binaryId); arrayBuffer = await res.arrayBuffer(); } catch (ex) { const msg = gettext('Could not get the binary.'); this.alertService.danger(msg); } return arrayBuffer; } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: BinaryFileDownloadService, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }, { token: i2.InventoryService }, { token: i3.AlertService }, { token: i3.ModalService }, { token: i4.TranslateService }, { token: i2.InventoryBinaryService }], target: i0.ɵɵFactoryTarget.Injectable }); } static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: BinaryFileDownloadService }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: BinaryFileDownloadService, decorators: [{ type: Injectable }], ctorParameters: () => [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.InventoryService }, { type: i3.AlertService }, { type: i3.ModalService }, { type: i4.TranslateService }, { type: i2.InventoryBinaryService }] }); class BinaryFileDownloadModule { constructor(binaryFileDownloadService) { binaryFileDownloadService.run(); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: BinaryFileDownloadModule, deps: [{ token: BinaryFileDownloadService }], target: i0.ɵɵFactoryTarget.NgModule }); } static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.15", ngImport: i0, type: BinaryFileDownloadModule, imports: [CommonModule, RouterModule] }); } static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: BinaryFileDownloadModule, providers: [BinaryFileDownloadService], imports: [CommonModule, RouterModule] }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: BinaryFileDownloadModule, decorators: [{ type: NgModule, args: [{ imports: [CommonModule, RouterModule], providers: [BinaryFileDownloadService] }] }], ctorParameters: () => [{ type: BinaryFileDownloadService }] }); /** * Generated bundle index. Do not edit. */ export { BinaryFileDownloadModule, BinaryFileDownloadService }; //# sourceMappingURL=c8y-ngx-components-binary-file-download.mjs.map