import { Injectable } from '@angular/core'; import { Base64 } from '../base64/base64'; import { AppConf } from '../app-conf/app-conf'; import { AppUtil } from '../app-util/app-util'; import { DbSvc } from '../db/db'; import { File } from '@ionic-native/file'; // import { Observable } from 'rxjs/Observable'; import { Platform } from 'ionic-angular'; @Injectable() export class FileSvc { root = null; directory: any; constructor(public base64: Base64, public appConf: AppConf, public appUtil: AppUtil, public dbSvc: DbSvc, public file: File, public platform: Platform) { if (file && platform.is('android') || platform.is('ios')) { this.directory = { appData() { if (platform.is('ios')) { return file.dataDirectory; } else { return file.externalDataDirectory; } }, exCache() { if (platform.is('ios')) { return file.tempDirectory; } else { return file.externalDataDirectory; } }, exAppData() { if (platform.is('ios')) { return file.dataDirectory + appConf.getAppName() + "/"; } else { return file.externalDataDirectory + appConf.getAppName() + "/"; } } } } } getFreeDiskSpace() { // return Observable.create(observer => { // observer.next(PROPERTIES); // observer.complete(); // }); let promise = new Promise((resolve, reject) => { this.file.getFreeDiskSpace().then(response => { resolve(response); }, rejectErr => { reject(rejectErr); }); }); return promise; } checkDir(core_directory, other_dir) { let promise = new Promise((resolve, reject) => { this.file.checkDir(core_directory, other_dir).then(function (success) { resolve(success); }, error => { reject(error); }); }); return promise; } checkFile(core_directory, file) { let promise = new Promise((resolve, reject) => { this.file.checkFile(core_directory, file) .then(function (success) { resolve(success); }, function (error) { reject(error); }); }); return promise; } createDir(core_directory, other_dir, is_replace) { let promise = new Promise((resolve, reject) => { this.file.createDir(core_directory, other_dir, is_replace) .then(function (success) { resolve(success); }, function (error) { reject(error); }); }); return promise; } createFile(core_directory, file, is_replace) { let promise = new Promise((resolve, reject) => { this.file.createFile(core_directory, file, is_replace) .then(function (success) { resolve(success); }, function (error) { reject(error); }); }); return promise; } removeDir(core_directory, other_dir) { let promise = new Promise((resolve, reject) => { this.file.removeDir(core_directory, other_dir) .then(function (success) { resolve(success); }, function (error) { reject(error); }); }); return promise; } removeFile = function (core_directory, file) { let promise = new Promise((resolve, reject) => { this.file.removeFile(core_directory, file) .then(function (success) { resolve(success); }, function (error) { reject(error); }); }); return promise; } removeRecursively(core_directory, other_dir) { let promise = new Promise((resolve, reject) => { this.file.removeRecursively(core_directory, other_dir) .then(function (success) { resolve(success); }, function (error) { reject(error); }); }); return promise; } writeFile = function (core_directory, file, data, is_replace) { let promise = new Promise((resolve, reject) => { this.file.writeFile(core_directory, file, data, is_replace) .then(function (success) { resolve(success); }, function (error) { reject(error); }); }); return promise; } writeExistingFile(core_directory, file, data) { //to parameter of type '{} | PromiseLike<{}>'. let promise = new Promise((resolve, reject) => { this.file.writeExistingFile(core_directory, file, data) .then(function(success) { //resolve(success); //err on this line:-- Argument of type 'void' is not assignable to parameter of type '{} | PromiseLike<{}>' //return void as success var ss='write in file successfully'; resolve(ss); }, function(error) { reject(error); }); }); return promise; } readAsText(core_directory, file) { let promise = new Promise((resolve, reject) => { this.file.readAsText(core_directory, file) .then(function (success) { resolve(success); }, function (error) { reject(error); }); }); return promise; } moveDir(core_directory, current_dir, move_core_dir, new_dir) { let promise = new Promise((resolve, reject) => { this.file.moveDir(core_directory, current_dir, move_core_dir, new_dir) .then(function (success) { resolve(success); }, function (error) { reject(error); }); }); return promise; } moveFile(core_directory, current_file, move_core_dir, new_file) { let promise = new Promise((resolve, reject) => { this.file.moveFile(core_directory, current_file, move_core_dir, new_file) .then(function (success) { resolve(success); }, function (error) { reject(error); }); }); return promise; } copyDir(core_directory, current_dir, move_core_dir, new_dir) { let promise = new Promise((resolve, reject) => { this.file.copyDir(core_directory, current_dir, move_core_dir, new_dir) .then(function (success) { resolve(success); }, function (error) { reject(error); }); }); return promise; } copyFile(core_directory, current_file, move_core_dir, new_file) { let promise = new Promise((resolve, reject) => { this.file.copyFile(core_directory, current_file, move_core_dir, new_file) .then(function (success) { resolve(success); }, function (error) { reject(error); }); }); return promise; } readAsDataURL(core_directory, file) { let promise = new Promise((resolve, reject) => { this.file.readAsDataURL(core_directory, file) .then(function (success) { resolve(success); }, function (error) { reject(error); }); }); return promise; } _base64ToArrayBuffer(base64) { var binary_string = window.atob(base64); var len = binary_string.length; var bytes = new Uint8Array(len); for (var i = 0; i < len; i++) { bytes[i] = binary_string.charCodeAt(i); } return bytes.buffer; } /*==== Generic Metods for the Application File Service. =====*/ init() { if (this.file && this.platform.is('android') || this.platform.is('ios')) { this.checkDir(this.directory.appData(), this.appConf.getAppName()).then(function (is_exist) { console.log(this.directory.appData()); }, function (is_exist) { this.createDir(this.directory.appData(), this.appConf.getAppName(), false).then(function (is_created) { }, function (is_created) { console.error("FileSvc -> this.init() -> this.createDir() ->" + "Failed to Create Direcory()" + is_created, true); }); }); } }; createSqlFile() { let promise = new Promise((resolve, reject) => { var writableData = "Create Database DriverAPP_" + new Date().getTime() + ";\n"; this.dbSvc.exportDBToFile().then(function(data) { writableData += data; this.file.writeFile(this.file.externalDataDirectory, "driverapp.sql", writableData, true).then(function(res) { resolve(this.file.externalDataDirectory + "driverapp.sql - Created."); }, function(err) { reject(err); }); }, function(err) { reject(err); }); }); return promise; } }