@iotize/ionic
Version:
Iotize specific building blocks on top of @ionic/angular.
75 lines • 9.74 kB
JavaScript
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=