From 420508b796674ca0f96da0bc04d80a627f9aebbe Mon Sep 17 00:00:00 2001 From: Peter Bakondy Date: Tue, 5 Apr 2016 11:56:50 +0200 Subject: [PATCH] Add cordova.file.dataDirectory check --- README.md | 10 ++++++++-- bower.json | 4 ++-- config/build.config.js | 2 +- dist/filelogger.js | 24 +++++++++++++++++++++++- dist/filelogger.min.js | 4 ++-- package.json | 19 +++++++++++++------ src/filelogger.js | 22 ++++++++++++++++++++++ 7 files changed, 71 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index db1705c..0fe3054 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ Ionic File Logger [![Bower](http://img.shields.io/badge/bower-filelogger-FFCC2F.svg?style=flat)](http://bower.io/search/?q=filelogger) -Logger module for Cordova/Ionic projects. +Logger module for Ionic projects. When you run your application in device the Logger writes in the local filesystem (with cordova-plugin-file) and the system logs (with console.log). @@ -11,7 +11,7 @@ When you run your application in browser with „ionic serve” the Logger uses ## Dependencies -- [ngCordova](http://ngcordova.com/) ( required version v0.1.14-alpha ) +- [ngCordova](http://ngcordova.com/) ( required version v0.1.24-alpha ) - [cordova-plugin-file](https://github.com/apache/cordova-plugin-file) ## Installation @@ -28,6 +28,12 @@ Install manually, or from bower: $ bower install filelogger ``` +Install with npm: + +```bash +$ npm install ionic-filelogger +``` + Include *filelogger.min.js* and ng-cordova.js or *ng-cordova.min.js* in your index.html file before cordova.js and after your AngularJS / Ionic file (since ngCordova depends on AngularJS). ```html diff --git a/bower.json b/bower.json index 76ac9c7..84f9663 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "filelogger", - "version": "1.3.0", + "version": "1.3.1", "homepage": "https://github.com/pbakondy/filelogger", "authors": [ "Peter Bakondy " @@ -14,7 +14,7 @@ "config" ], "dependencies": { - "ngCordova": ">= 0.1.14-alpha" + "ngCordova": ">= 0.1.24-alpha" }, "keywords": [ "cordova", diff --git a/config/build.config.js b/config/build.config.js index 8a617ea..24951b2 100644 --- a/config/build.config.js +++ b/config/build.config.js @@ -1,7 +1,7 @@ module.exports = { banner: '/*!\n' + ' * fileLogger\n' + - ' * Copyright 2015 Peter Bakondy https://github.com/pbakondy\n' + + ' * Copyright 2016 Peter Bakondy https://github.com/pbakondy\n' + ' * See LICENSE in this repository for license information\n' + ' */\n', diff --git a/dist/filelogger.js b/dist/filelogger.js index d5d7ad4..8a90ab5 100644 --- a/dist/filelogger.js +++ b/dist/filelogger.js @@ -1,6 +1,6 @@ /*! * fileLogger - * Copyright 2015 Peter Bakondy https://github.com/pbakondy + * Copyright 2016 Peter Bakondy https://github.com/pbakondy * See LICENSE in this repository for license information */ (function(){ @@ -172,6 +172,11 @@ angular.module('fileLogger', ['ngCordova.plugins.file']) } else { + if (!$window.cordova || !$window.cordova.file || !$window.cordova.file.dataDirectory) { + q.reject('cordova.file.dataDirectory is not available'); + return q.promise; + } + $cordovaFile.checkFile(cordova.file.dataDirectory, storageFilename).then( function() { // writeExistingFile(path, fileName, text) @@ -209,6 +214,12 @@ angular.module('fileLogger', ['ngCordova.plugins.file']) if (isBrowser()) { q.resolve($window.localStorage[storageFilename]); } else { + + if (!$window.cordova || !$window.cordova.file || !$window.cordova.file.dataDirectory) { + q.reject('cordova.file.dataDirectory is not available'); + return q.promise; + } + $cordovaFile.readAsText(cordova.file.dataDirectory, storageFilename).then( function(result) { q.resolve(result); @@ -230,6 +241,12 @@ angular.module('fileLogger', ['ngCordova.plugins.file']) $window.localStorage.removeItem(storageFilename); q.resolve(); } else { + + if (!$window.cordova || !$window.cordova.file || !$window.cordova.file.dataDirectory) { + q.reject('cordova.file.dataDirectory is not available'); + return q.promise; + } + $cordovaFile.removeFile(cordova.file.dataDirectory, storageFilename).then( function(result) { q.resolve(result); @@ -281,6 +298,11 @@ angular.module('fileLogger', ['ngCordova.plugins.file']) } else { + if (!$window.cordova || !$window.cordova.file || !$window.cordova.file.dataDirectory) { + q.reject('cordova.file.dataDirectory is not available'); + return q.promise; + } + $cordovaFile.checkFile(cordova.file.dataDirectory, storageFilename).then(function(fileEntry) { fileEntry.file(q.resolve, q.reject); }, q.reject); diff --git a/dist/filelogger.min.js b/dist/filelogger.min.js index 4fd8ec7..de02b86 100644 --- a/dist/filelogger.min.js +++ b/dist/filelogger.min.js @@ -1,6 +1,6 @@ /*! * fileLogger - * Copyright 2015 Peter Bakondy https://github.com/pbakondy + * Copyright 2016 Peter Bakondy https://github.com/pbakondy * See LICENSE in this repository for license information */ -!function(){angular.module("fileLogger",["ngCordova.plugins.file"]).factory("$fileLogger",["$q","$window","$cordovaFile","$timeout","$filter",function(e,o,n,r,t){"use strict";function a(){return!o.cordova&&!o.PhoneGap&&!o.phonegap}function l(e){angular.isString(e)?(e=e.toUpperCase(),-1===O.indexOf(e)&&(e="INFO")):e="INFO";for(var o,n=new Date,r=m?t("date")(n,m,F):n.toJSON(),l=Array.prototype.slice.call(arguments,1),c=[r,e],s=0;s0?(R=e,!0):!1}function g(e,o){if(!angular.isUndefined(e)&&!angular.isString(e))throw new TypeError("format parameter must be a string or undefined");if(!angular.isUndefined(o)&&!angular.isString(o))throw new TypeError("timezone parameter must be a string or undefined");m=e,F=o}function p(){var r=e.defer();return a()?r.resolve({name:R,localURL:"localStorage://localhost/"+R,type:"text/plain",size:o.localStorage[R]?o.localStorage[R].length:0}):n.checkFile(cordova.file.dataDirectory,R).then(function(e){e.file(r.resolve,r.reject)},r.reject),r.promise}function d(){var e=Array.prototype.slice.call(arguments,0);e.unshift("DEBUG"),l.apply(void 0,e)}function y(){var e=Array.prototype.slice.call(arguments,0);e.unshift("INFO"),l.apply(void 0,e)}function v(){var e=Array.prototype.slice.call(arguments,0);e.unshift("WARN"),l.apply(void 0,e)}function h(){var e=Array.prototype.slice.call(arguments,0);e.unshift("ERROR"),l.apply(void 0,e)}var m,F,S=[],b=!1,O=["DEBUG","INFO","WARN","ERROR"],R="messages.log";return{log:l,getLogfile:s,deleteLogfile:u,setStorageFilename:f,setTimestampFormat:g,checkFile:p,debug:d,info:y,warn:v,error:h}}])}(); \ No newline at end of file +!function(){angular.module("fileLogger",["ngCordova.plugins.file"]).factory("$fileLogger",["$q","$window","$cordovaFile","$timeout","$filter",function(e,o,r,a,n){"use strict";function t(){return!o.cordova&&!o.PhoneGap&&!o.phonegap}function i(e){angular.isString(e)?(e=e.toUpperCase(),-1===S.indexOf(e)&&(e="INFO")):e="INFO";for(var o,r=new Date,a=m?n("date")(r,m,b):r.toJSON(),i=Array.prototype.slice.call(arguments,1),c=[a,e],s=0;s0?(j=e,!0):!1}function g(e,o){if(!angular.isUndefined(e)&&!angular.isString(e))throw new TypeError("format parameter must be a string or undefined");if(!angular.isUndefined(o)&&!angular.isString(o))throw new TypeError("timezone parameter must be a string or undefined");m=e,b=o}function d(){var a=e.defer();if(t())a.resolve({name:j,localURL:"localStorage://localhost/"+j,type:"text/plain",size:o.localStorage[j]?o.localStorage[j].length:0});else{if(!o.cordova||!o.cordova.file||!o.cordova.file.dataDirectory)return a.reject("cordova.file.dataDirectory is not available"),a.promise;r.checkFile(cordova.file.dataDirectory,j).then(function(e){e.file(a.resolve,a.reject)},a.reject)}return a.promise}function p(){var e=Array.prototype.slice.call(arguments,0);e.unshift("DEBUG"),i.apply(void 0,e)}function v(){var e=Array.prototype.slice.call(arguments,0);e.unshift("INFO"),i.apply(void 0,e)}function y(){var e=Array.prototype.slice.call(arguments,0);e.unshift("WARN"),i.apply(void 0,e)}function h(){var e=Array.prototype.slice.call(arguments,0);e.unshift("ERROR"),i.apply(void 0,e)}var m,b,F=[],D=!1,S=["DEBUG","INFO","WARN","ERROR"],j="messages.log";return{log:i,getLogfile:s,deleteLogfile:f,setStorageFilename:u,setTimestampFormat:g,checkFile:d,debug:p,info:v,warn:y,error:h}}])}(); \ No newline at end of file diff --git a/package.json b/package.json index 3a5e099..27dac36 100644 --- a/package.json +++ b/package.json @@ -1,22 +1,29 @@ { - "name": "filelogger", + "name": "ionic-filelogger", "private": false, "main": "dist/filelogger", - "version": "1.3.0", + "version": "1.3.1", "repository": { - "url": "git://github.com/pbakondy/filelogger.git" + "type": "git", + "url": "https://github.com/pbakondy/filelogger.git" }, "devDependencies": { - "gulp": "^3.7.0", + "gulp": "^3.9.1", "gulp-footer": "^1.0.4", "gulp-header": "^1.0.2", "gulp-jshint": "^2.0.0", "gulp-rename": "^1.2.0", - "gulp-uglify": "^1.5.1", + "gulp-uglify": "^1.5.3", "jshint": "^2.8.0", "jshint-stylish": "^2.1.0", "minimist": "^1.2.0" }, "license": "MIT", - "dependencies": {} + "dependencies": { + "ng-cordova": "^0.1.24-alpha" + }, + "bugs": { + "url": "https://github.com/pbakondy/filelogger/issues" + }, + "homepage": "https://github.com/pbakondy/filelogger#readme" } diff --git a/src/filelogger.js b/src/filelogger.js index 18264f2..c059352 100644 --- a/src/filelogger.js +++ b/src/filelogger.js @@ -166,6 +166,11 @@ angular.module('fileLogger', ['ngCordova.plugins.file']) } else { + if (!$window.cordova || !$window.cordova.file || !$window.cordova.file.dataDirectory) { + q.reject('cordova.file.dataDirectory is not available'); + return q.promise; + } + $cordovaFile.checkFile(cordova.file.dataDirectory, storageFilename).then( function() { // writeExistingFile(path, fileName, text) @@ -203,6 +208,12 @@ angular.module('fileLogger', ['ngCordova.plugins.file']) if (isBrowser()) { q.resolve($window.localStorage[storageFilename]); } else { + + if (!$window.cordova || !$window.cordova.file || !$window.cordova.file.dataDirectory) { + q.reject('cordova.file.dataDirectory is not available'); + return q.promise; + } + $cordovaFile.readAsText(cordova.file.dataDirectory, storageFilename).then( function(result) { q.resolve(result); @@ -224,6 +235,12 @@ angular.module('fileLogger', ['ngCordova.plugins.file']) $window.localStorage.removeItem(storageFilename); q.resolve(); } else { + + if (!$window.cordova || !$window.cordova.file || !$window.cordova.file.dataDirectory) { + q.reject('cordova.file.dataDirectory is not available'); + return q.promise; + } + $cordovaFile.removeFile(cordova.file.dataDirectory, storageFilename).then( function(result) { q.resolve(result); @@ -275,6 +292,11 @@ angular.module('fileLogger', ['ngCordova.plugins.file']) } else { + if (!$window.cordova || !$window.cordova.file || !$window.cordova.file.dataDirectory) { + q.reject('cordova.file.dataDirectory is not available'); + return q.promise; + } + $cordovaFile.checkFile(cordova.file.dataDirectory, storageFilename).then(function(fileEntry) { fileEntry.file(q.resolve, q.reject); }, q.reject);