/*jslint indent: 2 */ /*global window, jQuery, angular, cordova */ "use strict"; // Returns a jQuery or AngularJS deferred object, or pass a success and fail callbacks if you don't want to use jQuery or AngularJS var getPromisedCordovaExec = function (command, success, fail) { var toReturn, deferred, injector, $q; if (success === undefined) { if (window.jQuery) { deferred = jQuery.Deferred(); success = deferred.resolve; fail = deferred.reject; toReturn = deferred; } else if (window.angular) { injector = angular.injector(["ng"]); $q = injector.get("$q"); deferred = $q.defer(); success = deferred.resolve; fail = deferred.reject; toReturn = deferred.promise; } else if (window.when && window.when.promise) { deferred = when.defer(); success = deferred.resolve; fail = deferred.reject; toReturn = deferred.promise; } else if (window.Promise) { toReturn = new Promise(function(c, e) { success = c; fail = e; }); } else if (window.WinJS && window.WinJS.Promise) { toReturn = new WinJS.Promise(function(c, e) { success = c; fail = e; }); } else { return console.error('AppVersion either needs a success callback, or jQuery/AngularJS/Promise/WinJS.Promise defined for using promises'); } } // 5th param is NOT optional. must be at least empty array cordova.exec(success, fail, "AppVersion", command, []); return toReturn; }; var getAppVersion = function (success, fail) { return getPromisedCordovaExec('getVersionNumber', success, fail); }; getAppVersion.getAppName = function (success, fail) { return getPromisedCordovaExec('getAppName', success, fail); }; getAppVersion.getPackageName = function (success, fail) { return getPromisedCordovaExec('getPackageName', success, fail); }; getAppVersion.getVersionNumber = function (success, fail) { return getPromisedCordovaExec('getVersionNumber', success, fail); }; getAppVersion.getVersionCode = function (success, fail) { return getPromisedCordovaExec('getVersionCode', success, fail); }; module.exports = getAppVersion;