UNPKG

@iotize/ionic

Version:

Iotize specific building blocks on top of @ionic/angular.

77 lines 9.78 kB
import { Injectable } from '@angular/core'; import { File } from '@awesome-cordova-plugins/file/ngx'; import { Platform } from '@ionic/angular'; import * as i0 from "@angular/core"; import * as i1 from "@awesome-cordova-plugins/file/ngx"; import * as i2 from "@ionic/angular"; export class ExportDataService { file; platform; constructor(file, platform) { this.file = file; this.platform = platform; } async triggerDownload(blob, filename) { if (this.platform.is('cordova')) { const directory = this.getDownloadDirectory(); filename = await this.ensureFileNameAvailable(directory, filename); await this.file.writeFile(directory, filename, blob); return directory; } else { const link = document.createElement('a'); link.href = URL.createObjectURL(blob); link.setAttribute('visibility', 'hidden'); link.download = filename; document.body.appendChild(link); link.click(); document.body.removeChild(link); return undefined; } } getDownloadDirectory() { let directory; if (this.file.externalRootDirectory) { directory = this.file.externalRootDirectory; if (this.platform.is('android')) { directory += 'Download/'; } } else if (this.file.dataDirectory) { directory = this.file.dataDirectory; } else if (this.file.documentsDirectory) { directory = this.file.documentsDirectory; } if (!directory) { throw new Error('Cannot find a valid directory to download the log file'); } return directory; } async ensureFileNameAvailable(directory, filename) { const parts = filename.split('.'); const extension = parts.length > 1 ? '.' + parts[parts.length - 1] : ''; const filenameWithoutExt = parts.length > 1 ? parts.slice(0, parts.length - 1).join('.') : parts[0]; let count = 1; while (await this.file .checkFile(directory, filename) .then((_) => true) .catch((err) => { console.log('Check file err', err); return false; })) { filename = `${filenameWithoutExt} (${count})${extension}`; count++; } return filename; } /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ExportDataService, deps: [{ token: i1.File }, { token: i2.Platform }], target: i0.ɵɵFactoryTarget.Injectable }); /** @nocollapse */ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ExportDataService, providedIn: 'root' }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ExportDataService, decorators: [{ type: Injectable, args: [{ providedIn: 'root', }] }], ctorParameters: () => [{ type: i1.File }, { type: i2.Platform }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LWRhdGEuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lvdGl6ZS1pb25pYy9tb25pdG9yaW5nL3NyYy9saWIvdWktZGlyZWN0aXZlL2V4cG9ydC1kYXRhLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDekQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBSzFDLE1BQU0sT0FBTyxpQkFBaUI7SUFDUjtJQUFvQjtJQUF4QyxZQUFvQixJQUFVLEVBQVUsUUFBa0I7UUFBdEMsU0FBSSxHQUFKLElBQUksQ0FBTTtRQUFVLGFBQVEsR0FBUixRQUFRLENBQVU7SUFBRyxDQUFDO0lBRTlELEtBQUssQ0FBQyxlQUFlLENBQUMsSUFBVSxFQUFFLFFBQWdCO1FBQ2hELElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUNoQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUM5QyxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsdUJBQXVCLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ25FLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNyRCxPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDekMsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFD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Z3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGaWxlIH0gZnJvbSAnQGF3ZXNvbWUtY29yZG92YS1wbHVnaW5zL2ZpbGUvbmd4JztcbmltcG9ydCB7IFBsYXRmb3JtIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgRXhwb3J0RGF0YVNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZpbGU6IEZpbGUsIHByaXZhdGUgcGxhdGZvcm06IFBsYXRmb3JtKSB7fVxuXG4gIGFzeW5jIHRyaWdnZXJEb3dubG9hZChibG9iOiBCbG9iLCBmaWxlbmFtZTogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMucGxhdGZvcm0uaXMoJ2NvcmRvdmEnKSkge1xuICAgICAgY29uc3QgZGlyZWN0b3J5ID0gdGhpcy5nZXREb3dubG9hZERpcmVjdG9yeSgpO1xuICAgICAgZmlsZW5hbWUgPSBhd2FpdCB0aGlzLmVuc3VyZUZpbGVOYW1lQXZhaWxhYmxlKGRpcmVjdG9yeSwgZmlsZW5hbWUpO1xuICAgICAgYXdhaXQgdGhpcy5maWxlLndyaXRlRmlsZShkaXJlY3RvcnksIGZpbGVuYW1lLCBibG9iKTtcbiAgICAgIHJldHVybiBkaXJlY3Rvcnk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICBsaW5rLmhyZWYgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuICAgICAgbGluay5zZXRBdHRyaWJ1dGUoJ3Zpc2liaWxpdHknLCAnaGlkZGVuJyk7XG4gICAgICBsaW5rLmRvd25sb2FkID0gZmlsZW5hbWU7XG4gICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xuICAgICAgbGluay5jbGljaygpO1xuICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKTtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXREb3dubG9hZERpcmVjdG9yeSgpIHtcbiAgICBsZXQgZGlyZWN0b3J5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgaWYgKHRoaXMuZmlsZS5leHRlcm5hbFJvb3REaXJlY3RvcnkpIHtcbiAgICAgIGRpcmVjdG9yeSA9IHRoaXMuZmlsZS5leHRlcm5hbFJvb3REaXJlY3Rvcnk7XG4gICAgICBpZiAodGhpcy5wbGF0Zm9ybS5pcygnYW5kcm9pZCcpKSB7XG4gICAgICAgIGRpcmVjdG9yeSArPSAnRG93bmxvYWQvJztcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMuZmlsZS5kYXRhRGlyZWN0b3J5KSB7XG4gICAgICBkaXJlY3RvcnkgPSB0aGlzLmZpbGUuZGF0YURpcmVjdG9yeTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuZmlsZS5kb2N1bWVudHNEaXJlY3RvcnkpIHtcbiAgICAgIGRpcmVjdG9yeSA9IHRoaXMuZmlsZS5kb2N1bWVudHNEaXJlY3Rvcnk7XG4gICAgfVxuICAgIGlmICghZGlyZWN0b3J5KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBmaW5kIGEgdmFsaWQgZGlyZWN0b3J5IHRvIGRvd25sb2FkIHRoZSBsb2cgZmlsZScpO1xuICAgIH1cbiAgICByZXR1cm4gZGlyZWN0b3J5O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBlbnN1cmVGaWxlTmFtZUF2YWlsYWJsZShcbiAgICBkaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBmaWxlbmFtZTogc3RyaW5nXG4gICk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgcGFydHMgPSBmaWxlbmFtZS5zcGxpdCgnLicpO1xuICAgIGNvbnN0IGV4dGVuc2lvbiA9IHBhcnRzLmxlbmd0aCA+IDEgPyAnLicgKyBwYXJ0c1twYXJ0cy5sZW5ndGggLSAxXSA6ICcnO1xuICAgIGNvbnN0IGZpbGVuYW1lV2l0aG91dEV4dCA9XG4gICAgICBwYXJ0cy5sZW5ndGggPiAxID8gcGFydHMuc2xpY2UoMCwgcGFydHMubGVuZ3RoIC0gMSkuam9pbignLicpIDogcGFydHNbMF07XG4gICAgbGV0IGNvdW50ID0gMTtcbiAgICB3aGlsZSAoXG4gICAgICBhd2FpdCB0aGlzLmZpbGVcbiAgICAgICAgLmNoZWNrRmlsZShkaXJlY3RvcnksIGZpbGVuYW1lKVxuICAgICAgICAudGhlbigoXykgPT4gdHJ1ZSlcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnQ2hlY2sgZmlsZSBlcnInLCBlcnIpO1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSlcbiAgICApIHtcbiAgICAgIGZpbGVuYW1lID0gYCR7ZmlsZW5hbWVXaXRob3V0RXh0fSAoJHtjb3VudH0pJHtleHRlbnNpb259YDtcbiAgICAgIGNvdW50Kys7XG4gICAgfVxuICAgIHJldHVybiBmaWxlbmFtZTtcbiAgfVxufVxuIl19