UNPKG

@iotize/ionic

Version:

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

75 lines 9.74 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 { 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 */ ExportDataService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ExportDataService, deps: [{ token: i1.File }, { token: i2.Platform }], target: i0.ɵɵFactoryTarget.Injectable }); /** @nocollapse */ ExportDataService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ExportDataService, providedIn: 'root' }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ExportDataService, decorators: [{ type: Injectable, args: [{ providedIn: 'root', }] }], ctorParameters: function () { return [{ type: i1.File }, { type: i2.Platform }]; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LWRhdGEuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lvdGl6ZS1pb25pYy9tb25pdG9yaW5nL3NyYy9saWIvdWktZGlyZWN0aXZlL2V4cG9ydC1kYXRhLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDekQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBSzFDLE1BQU0sT0FBTyxpQkFBaUI7SUFDNUIsWUFBb0IsSUFBVSxFQUFVLFFBQWtCO1FBQXRDLFNBQUksR0FBSixJQUFJLENBQU07UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFVO0lBQUcsQ0FBQztJQUU5RCxLQUFLLENBQUMsZUFBZSxDQUFDLElBQVUsRUFBRSxRQUFnQjtRQUNoRCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQy9CLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQzlDLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDbkUsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3JELE9BQU8sU0FBUyxDQUFDO1NBQ2xCO2FBQU07WUFDTCxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3pDLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN0QyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsQ0FBQztZQUMxQyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztZQUN6QixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNoQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDYixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNoQyxPQUFPLFNBQVMsQ0FBQztTQUNsQjtJQUNILENBQUM7SUFFTyxvQkFBb0I7UUFDMUIsSUFBSSxTQUE2QixDQUFDO1FBQ2xDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRTtZQUNuQyxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztZQUM1QyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFO2dCQUMvQixTQUFTLElBQUksV0FBVyxDQUFDO2FBQzFCO1NBQ0Y7YUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ2xDLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztTQUNyQzthQUFNLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZQUN2QyxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztTQUMxQztRQUNELElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDZCxNQUFNLElBQUksS0FBSyxDQUFDLHdEQUF3RCxDQUFDLENBQUM7U0FDM0U7UUFDRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRU8sS0FBSyxDQUFDLHVCQUF1QixDQUNuQyxTQUFpQixFQUNqQixRQUFnQjtRQUVoQixNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2xDLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN4RSxNQUFNLGtCQUFrQixHQUN0QixLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzRSxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDZCxPQUNFLE1BQU0sSUFBSSxDQUFDLElBQUk7YUFDWixTQUFTLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQzthQUM5QixJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQzthQUNqQixLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNiLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDbkMsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDLENBQUMsRUFDSjtZQUNBLFFBQVEsR0FBRyxHQUFHLGtCQUFrQixLQUFLLEtBQUssSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUMxRCxLQUFLLEVBQUUsQ0FBQztTQUNUO1FBQ0QsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQzs7a0lBN0RVLGlCQUFpQjtzSUFBakIsaUJBQWlCLGNBRmhCLE1BQU07NEZBRVAsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZpbGUgfSBmcm9tICdAYXdlc29tZS1jb3Jkb3ZhLXBsdWdpbnMvZmlsZS9uZ3gnO1xuaW1wb3J0IHsgUGxhdGZvcm0gfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBFeHBvcnREYXRhU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZmlsZTogRmlsZSwgcHJpdmF0ZSBwbGF0Zm9ybTogUGxhdGZvcm0pIHt9XG5cbiAgYXN5bmMgdHJpZ2dlckRvd25sb2FkKGJsb2I6IEJsb2IsIGZpbGVuYW1lOiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5wbGF0Zm9ybS5pcygnY29yZG92YScpKSB7XG4gICAgICBjb25zdCBkaXJlY3RvcnkgPSB0aGlzLmdldERvd25sb2FkRGlyZWN0b3J5KCk7XG4gICAgICBmaWxlbmFtZSA9IGF3YWl0IHRoaXMuZW5zdXJlRmlsZU5hbWVBdmFpbGFibGUoZGlyZWN0b3J5LCBmaWxlbmFtZSk7XG4gICAgICBhd2FpdCB0aGlzLmZpbGUud3JpdGVGaWxlKGRpcmVjdG9yeSwgZmlsZW5hbWUsIGJsb2IpO1xuICAgICAgcmV0dXJuIGRpcmVjdG9yeTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgIGxpbmsuaHJlZiA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgICBsaW5rLnNldEF0dHJpYnV0ZSgndmlzaWJpbGl0eScsICdoaWRkZW4nKTtcbiAgICAgIGxpbmsuZG93bmxvYWQgPSBmaWxlbmFtZTtcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGluayk7XG4gICAgICBsaW5rLmNsaWNrKCk7XG4gICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxpbmspO1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldERvd25sb2FkRGlyZWN0b3J5KCkge1xuICAgIGxldCBkaXJlY3Rvcnk6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBpZiAodGhpcy5maWxlLmV4dGVybmFsUm9vdERpcmVjdG9yeSkge1xuICAgICAgZGlyZWN0b3J5ID0gdGhpcy5maWxlLmV4dGVybmFsUm9vdERpcmVjdG9yeTtcbiAgICAgIGlmICh0aGlzLnBsYXRmb3JtLmlzKCdhbmRyb2lkJykpIHtcbiAgICAgICAgZGlyZWN0b3J5ICs9ICdEb3dubG9hZC8nO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy5maWxlLmRhdGFEaXJlY3RvcnkpIHtcbiAgICAgIGRpcmVjdG9yeSA9IHRoaXMuZmlsZS5kYXRhRGlyZWN0b3J5O1xuICAgIH0gZWxzZSBpZiAodGhpcy5maWxlLmRvY3VtZW50c0RpcmVjdG9yeSkge1xuICAgICAgZGlyZWN0b3J5ID0gdGhpcy5maWxlLmRvY3VtZW50c0RpcmVjdG9yeTtcbiAgICB9XG4gICAgaWYgKCFkaXJlY3RvcnkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGZpbmQgYSB2YWxpZCBkaXJlY3RvcnkgdG8gZG93bmxvYWQgdGhlIGxvZyBmaWxlJyk7XG4gICAgfVxuICAgIHJldHVybiBkaXJlY3Rvcnk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGVuc3VyZUZpbGVOYW1lQXZhaWxhYmxlKFxuICAgIGRpcmVjdG9yeTogc3RyaW5nLFxuICAgIGZpbGVuYW1lOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCBwYXJ0cyA9IGZpbGVuYW1lLnNwbGl0KCcuJyk7XG4gICAgY29uc3QgZXh0ZW5zaW9uID0gcGFydHMubGVuZ3RoID4gMSA/ICcuJyArIHBhcnRzW3BhcnRzLmxlbmd0aCAtIDFdIDogJyc7XG4gICAgY29uc3QgZmlsZW5hbWVXaXRob3V0RXh0ID1cbiAgICAgIHBhcnRzLmxlbmd0aCA+IDEgPyBwYXJ0cy5zbGljZSgwLCBwYXJ0cy5sZW5ndGggLSAxKS5qb2luKCcuJykgOiBwYXJ0c1swXTtcbiAgICBsZXQgY291bnQgPSAxO1xuICAgIHdoaWxlIChcbiAgICAgIGF3YWl0IHRoaXMuZmlsZVxuICAgICAgICAuY2hlY2tGaWxlKGRpcmVjdG9yeSwgZmlsZW5hbWUpXG4gICAgICAgIC50aGVuKChfKSA9PiB0cnVlKVxuICAgICAgICAuY2F0Y2goKGVycikgPT4ge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdDaGVjayBmaWxlIGVycicsIGVycik7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9KVxuICAgICkge1xuICAgICAgZmlsZW5hbWUgPSBgJHtmaWxlbmFtZVdpdGhvdXRFeHR9ICgke2NvdW50fSkke2V4dGVuc2lvbn1gO1xuICAgICAgY291bnQrKztcbiAgICB9XG4gICAgcmV0dXJuIGZpbGVuYW1lO1xuICB9XG59XG4iXX0=