{"version":3,"file":"c8y-ngx-components-binary-file-download.mjs","sources":["../../binary-file-download/binary-file-download.service.ts","../../binary-file-download/binary-file-download.module.ts","../../binary-file-download/c8y-ngx-components-binary-file-download.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { Router, NavigationEnd, ActivatedRoute } from '@angular/router';\nimport { filter, map } from 'rxjs/operators';\nimport { IManagedObject, InventoryBinaryService, InventoryService } from '@c8y/client';\nimport { AlertService, gettext, ModalService, Status } from '@c8y/ngx-components';\nimport { saveAs } from 'file-saver';\nimport { isUndefined } from 'lodash-es';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Injectable()\nexport class BinaryFileDownloadService {\n  constructor(\n    private router: Router,\n    private route: ActivatedRoute,\n    private inventoryService: InventoryService,\n    private alertService: AlertService,\n    private modalService: ModalService,\n    private translate: TranslateService,\n    private inventoryBinary: InventoryBinaryService\n  ) {}\n\n  run() {\n    this.router.events\n      .pipe(\n        filter(event => {\n          return event instanceof NavigationEnd && this.route.snapshot.queryParams.download;\n        }),\n        map(() => this.route.snapshot.queryParams.download)\n      )\n      .subscribe(async downloadId => {\n        try {\n          const { data } = await this.inventoryService.detail(downloadId);\n          if (!isUndefined(data.c8y_IsBinary)) {\n            this.showDownloadModal(data);\n          } else {\n            const alertMessage = this.translate.instant(\n              gettext(\n                'Could not download the file: object with ID \"{{ id }}\" is not a valid binary.'\n              ),\n              { id: data.id }\n            );\n            this.alertService.danger(alertMessage);\n          }\n        } catch (ex) {\n          this.alertService.addServerFailure(ex);\n        }\n      });\n  }\n\n  async showDownloadModal(binaryMo: IManagedObject) {\n    try {\n      const modalBody = this.translate.instant(\n        gettext('You are about to download file \"{{ fileName }}\". Do you want to proceed?'),\n        { fileName: binaryMo.name }\n      );\n      await this.modalService.confirm(gettext('File download'), modalBody, Status.INFO, {\n        ok: gettext('Download')\n      });\n      const arrayBuffer = await this.getArrayBuffer(binaryMo.id);\n      const fileBinary = new File([arrayBuffer], binaryMo.name, { type: binaryMo.contentType });\n      saveAs(fileBinary);\n    } catch (e) {\n      // empty body :(\n      console.log({ e });\n    }\n  }\n\n  private async getArrayBuffer(binaryId): Promise<ArrayBuffer> {\n    let arrayBuffer: ArrayBuffer;\n    try {\n      const res = await this.inventoryBinary.download(binaryId);\n      arrayBuffer = await res.arrayBuffer();\n    } catch (ex) {\n      const msg = gettext('Could not get the binary.');\n      this.alertService.danger(msg);\n    }\n\n    return arrayBuffer;\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@c8y/ngx-components';\nimport { BinaryFileDownloadService } from './binary-file-download.service';\nimport { RouterModule } from '@angular/router';\n\n@NgModule({\n  imports: [CommonModule, RouterModule],\n  providers: [BinaryFileDownloadService]\n})\nexport class BinaryFileDownloadModule {\n  constructor(binaryFileDownloadService: BinaryFileDownloadService) {\n    binaryFileDownloadService.run();\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.BinaryFileDownloadService"],"mappings":";;;;;;;;;;;;MAUa,yBAAyB,CAAA;AACpC,IAAA,WAAA,CACU,MAAc,EACd,KAAqB,EACrB,gBAAkC,EAClC,YAA0B,EAC1B,YAA0B,EAC1B,SAA2B,EAC3B,eAAuC,EAAA;QANvC,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QACd,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;QACrB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAClC,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;QAC1B,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;QAC1B,IAAS,CAAA,SAAA,GAAT,SAAS,CAAkB;QAC3B,IAAe,CAAA,eAAA,GAAf,eAAe,CAAwB;KAC7C;IAEJ,GAAG,GAAA;QACD,IAAI,CAAC,MAAM,CAAC,MAAM;AACf,aAAA,IAAI,CACH,MAAM,CAAC,KAAK,IAAG;AACb,YAAA,OAAO,KAAK,YAAY,aAAa,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC;AACpF,SAAC,CAAC,EACF,GAAG,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CACpD;AACA,aAAA,SAAS,CAAC,OAAM,UAAU,KAAG;AAC5B,YAAA,IAAI;AACF,gBAAA,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBAChE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;AACnC,oBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;iBAC9B;qBAAM;oBACL,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CACzC,OAAO,CACL,+EAA+E,CAChF,EACD,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAChB,CAAC;AACF,oBAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;iBACxC;aACF;YAAC,OAAO,EAAE,EAAE;AACX,gBAAA,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;aACxC;AACH,SAAC,CAAC,CAAC;KACN;IAED,MAAM,iBAAiB,CAAC,QAAwB,EAAA;AAC9C,QAAA,IAAI;YACF,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CACtC,OAAO,CAAC,0EAA0E,CAAC,EACnF,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,CAC5B,CAAC;AACF,YAAA,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI,EAAE;AAChF,gBAAA,EAAE,EAAE,OAAO,CAAC,UAAU,CAAC;AACxB,aAAA,CAAC,CAAC;YACH,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC3D,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;YAC1F,MAAM,CAAC,UAAU,CAAC,CAAC;SACpB;QAAC,OAAO,CAAC,EAAE;;AAEV,YAAA,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;SACpB;KACF;IAEO,MAAM,cAAc,CAAC,QAAQ,EAAA;AACnC,QAAA,IAAI,WAAwB,CAAC;AAC7B,QAAA,IAAI;YACF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC1D,YAAA,WAAW,GAAG,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC;SACvC;QAAC,OAAO,EAAE,EAAE;AACX,YAAA,MAAM,GAAG,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAAC;AACjD,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;SAC/B;AAED,QAAA,OAAO,WAAW,CAAC;KACpB;+GApEU,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;mHAAzB,yBAAyB,EAAA,CAAA,CAAA,EAAA;;4FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBADrC,UAAU;;;MCAE,wBAAwB,CAAA;AACnC,IAAA,WAAA,CAAY,yBAAoD,EAAA;QAC9D,yBAAyB,CAAC,GAAG,EAAE,CAAC;KACjC;+GAHU,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,yBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;gHAAxB,wBAAwB,EAAA,OAAA,EAAA,CAHzB,YAAY,EAAE,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;AAGzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,aAFxB,CAAC,yBAAyB,CAAC,EAD5B,OAAA,EAAA,CAAA,YAAY,EAAE,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAGzB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAJpC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;oBACrC,SAAS,EAAE,CAAC,yBAAyB,CAAC;AACvC,iBAAA,CAAA;;;ACRD;;AAEG;;;;"}