{"version":3,"file":"download.min.js","sources":["download.ts"],"sourcesContent":["namespace eXpress.services {\r\n\r\n\texport interface IDownloadStatusResult {\r\n\t\treadonly FileId: string;\r\n\t\treadonly Status: number;\r\n\t\treadonly Info: string;\r\n\t\treadonly OriginalFileName: string;\r\n\t}\r\n\r\n\texport interface IPartnerPhotoData {\r\n\t\t/** Mediastore file Id*/\r\n\t\treadonly Id?: string;\r\n\t\t/** Partner ref string*/\r\n\t\treadonly Code: string;\r\n\t\treadonly ImageFilename: string;\r\n\t\treadonly StoreType: services.StoreType;\r\n\t\treadonly ImageUrl: string;\r\n\t}\r\n\r\n\texport class Download {\r\n\r\n\t\tprivate downloadService: DownloadService;\r\n\t\tprivate downloader: core.Downloader;\r\n\t\tprivate downloadQueue: core.IDownloadQueueItem[];\r\n\r\n\t\tconstructor(downloadService: DownloadService, downloader: core.Downloader) {\r\n\t\t\tthis.downloadService = downloadService;\r\n\t\t\tthis.downloader = downloader;\r\n\t\t\tthis.downloadQueue = [];\r\n\t\t}\r\n\r\n\t\tpublic addToQueueAsync(photos: core.partners.PartnerPhoto[], flow: string): JQueryPromise {\r\n\t\t\treturn this.createSessionAsync(photos, flow).then((sessionCreated: boolean) => {\r\n\t\t\t\tif (!sessionCreated) {\r\n\t\t\t\t\treturn $.Deferred().reject(new Error('Download session could not be created on server.')).promise();\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn this.waitForAllDownloadsAsync();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tprivate createSessionAsync(photos: core.partners.PartnerPhoto[], flow: string): JQueryPromise {\r\n\t\t\tconst downloadQueueItems: core.IDownloadQueueItem[] = [];\r\n\t\t\tconst partnerPhotoDatas: services.IPartnerPhotoData[] =[];\r\n\t\t\tphotos.forEach(photo => {\r\n\t\t\t\tconst partnerPhotoData: services.IPartnerPhotoData = {\r\n\t\t\t\t\tId: eXpress.base.generateNewGuid(),\r\n\t\t\t\t\tCode: photo.code,\r\n\t\t\t\t\tImageFilename: photo.name,\r\n\t\t\t\t\tImageUrl: photo.downloadUrl,\r\n\t\t\t\t\tStoreType: photo.storeType\r\n\t\t\t\t};\r\n\r\n\t\t\t\tconst downloadQueueItem: core.IDownloadQueueItem = {\r\n\t\t\t\t\tstate: core.DownloadItemStates.WaitingForDownload,\r\n\t\t\t\t\terrorMessage: undefined,\r\n\t\t\t\t\titemToDownload: photo,\r\n\t\t\t\t\tdownloadedItem: {\r\n\t\t\t\t\t\tphotoId: partnerPhotoData.Code, // is partner ref string\r\n\t\t\t\t\t\tname: partnerPhotoData.ImageFilename,\r\n\t\t\t\t\t\tmediastoreFileId: utils.required(partnerPhotoData.Id, \"no media store file id for partner photo\")\r\n\t\t\t\t\t},\r\n\t\t\t\t};\r\n\r\n\t\t\t\tdownloadQueueItems.push(downloadQueueItem);\r\n\t\t\t\tpartnerPhotoDatas.push(partnerPhotoData);\r\n\t\t\t});\r\n\r\n\t\t\t// Create Session\r\n\t\t\treturn this.downloadService.createDownloadSessionForPartnerPhotosAsync(partnerPhotoDatas, core.context.pointOfSaleId, GetCookie(\"accid\"), core.context.languageCode, flow)\r\n\t\t\t\t.then(sessionCreated => {\r\n\t\t\t\t\tif (sessionCreated)\r\n\t\t\t\t\t\tdownloadQueueItems.forEach(dqi => this.downloadQueue.push(dqi));\r\n\r\n\t\t\t\t\treturn sessionCreated;\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\t/** Check if already downloaded, imported or failted */\r\n\t\tprivate checkDownloadStatusAsync(): JQueryPromise {\r\n\t\t\tconst fileIdsToCheck = this.downloadQueue\r\n\t\t\t\t.filter(i => i.state !== core.DownloadItemStates.DownloadError\r\n\t\t\t\t\t&& i.state !== core.DownloadItemStates.Imported\r\n\t\t\t\t\t&& i.state !== core.DownloadItemStates.ImportError\r\n\t\t\t\t\t&& i.state !== core.DownloadItemStates.NotFound)\r\n\t\t\t\t.filter(i => i.downloadedItem)\r\n\t\t\t\t.map(item => item.downloadedItem!.mediastoreFileId);\r\n\r\n\t\t\treturn this.downloadService.downloadPartnerCheckStatusFilesAsync(fileIdsToCheck, GetCookie(\"accid\"))\r\n\t\t\t\t.then((result: IDownloadStatusResult[]) => {\r\n\t\t\t\t\tconst itemsChanged: core.IDownloadQueueItem[] = [];\r\n\r\n\t\t\t\t\tresult.forEach((resultItem: IDownloadStatusResult) => {\r\n\t\t\t\t\t\tconst queueItems = this.downloadQueue.filter(qi => qi.downloadedItem?.mediastoreFileId === resultItem.FileId);\r\n\t\t\t\t\t\tif (utils.isNonEmptyArray(queueItems)) {\r\n\t\t\t\t\t\t\tconst queueItem = queueItems[0];\r\n\t\t\t\t\t\t\tconst newState = resultItem.Status;\r\n\t\t\t\t\t\t\tif (newState !== queueItem.state) {\r\n\t\t\t\t\t\t\t\tqueueItem.state = newState;\r\n\t\t\t\t\t\t\t\titemsChanged.push(queueItem);\r\n\t\t\t\t\t\t\t\tif (resultItem.Info) {\r\n\t\t\t\t\t\t\t\t\tqueueItem.errorMessage = \"Photo '\" + queueItem.itemToDownload.name + \"' (id:\" + (queueItem.downloadedItem?.mediastoreFileId || 'NA') + \") could not be not be downloaded or imported at SmartPhoto. ErrorMessage: \" + resultItem.Info;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif (itemsChanged.length) {\r\n\t\t\t\t\t\tthis.downloader.handleDownloadItem(this.downloadQueue.length, result.length);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (this.hasUncompletedDownloads())\r\n\t\t\t\t\t\treturn null;\r\n\t\t\t\t\telse\r\n\t\t\t\t\t\treturn this.downloadQueue;\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\tprivate hasUncompletedDownloads(): boolean {\r\n\t\t\treturn this.downloadQueue.some((i: core.IDownloadQueueItem) =>\r\n\t\t\t\t(i.state === core.DownloadItemStates.WaitingForDownload || i.state === core.DownloadItemStates.Downloaded)\r\n\t\t\t\t&& (!i.errorMessage || i.errorMessage.length === 0));\r\n\t\t}\r\n\r\n\t\t/** Check to close session */\r\n\r\n\t\tprivate waitForAllDownloadsAsync(delay?: number): JQueryPromise {\r\n\t\t\tlet del = 200;\r\n\t\t\tif (delay) {\r\n\t\t\t\tconst check = delay * 1.10;\r\n\t\t\t\tdel = Math.round(check);\r\n\t\t\t\tif (delay > 2000)\r\n\t\t\t\t\tdel = 2000;\r\n\t\t\t}\r\n\r\n\t\t\treturn this.checkDownloadStatusAsync()\r\n\t\t\t\t.then(files => {\r\n\t\t\t\t\tif (files)\r\n\t\t\t\t\t\treturn $.Deferred().resolve(files).promise();\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\treturn utils.waitAsync(del).then(() => {\r\n\t\t\t\t\t\t\treturn this.waitForAllDownloadsAsync(del);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n}\r\n"],"names":["eXpress","services","Download","downloadService","downloader","this","downloadQueue","prototype","addToQueueAsync","photos","flow","_this","createSessionAsync","then","sessionCreated","waitForAllDownloadsAsync","$","Deferred","reject","Error","promise","downloadQueueItems","partnerPhotoDatas","forEach","photo","partnerPhotoData","Id","base","generateNewGuid","Code","code","ImageFilename","name","ImageUrl","downloadUrl","StoreType","storeType","downloadQueueItem","state","core","DownloadItemStates","WaitingForDownload","errorMessage","undefined","itemToDownload","downloadedItem","photoId","mediastoreFileId","utils","required","push","createDownloadSessionForPartnerPhotosAsync","context","pointOfSaleId","GetCookie","languageCode","dqi","checkDownloadStatusAsync","fileIdsToCheck","filter","i","DownloadError","Imported","ImportError","NotFound","map","item","downloadPartnerCheckStatusFilesAsync","result","itemsChanged","resultItem","queueItems","qi","_a","FileId","isNonEmptyArray","queueItem","newState","Status","Info","length","handleDownloadItem","hasUncompletedDownloads","some","Downloaded","delay","del","check","Math","round","files","resolve","waitAsync"],"mappings":"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"}