Commit a2b77a2f authored by Sebastián Katzer's avatar Sebastián Katzer
Browse files

Flatten JS file

parent a21a13bb
Loading
Loading
Loading
Loading
+162 −153
Changes for www/local-notification.js: 162 added lines, 153 removed lines.
Original line number Diff line number Diff line
@@ -19,8 +19,48 @@
    under the License.
*/

var LocalNotification = function () {
    this._defaults = {
var exec    = require('cordova/exec'),
    channel = require('cordova/channel');


// Called after 'deviceready' event
channel.deviceready.subscribe( function () {
    // Device is ready now, the listeners are registered
    // and all queued events can be executed.
    exec(null, null, 'LocalNotification', 'deviceready', []);
});

// Called before 'deviceready' event
channel.onCordovaReady.subscribe( function () {
    // The cordova device plugin is ready now
    channel.onCordovaInfoReady.subscribe( function () {
        if (device.platform == 'Android') {
            channel.onPause.subscribe( function () {
                // Necessary to set the state to `background`
                exec(null, null, 'LocalNotification', 'pause', []);
            });

            channel.onResume.subscribe( function () {
                // Necessary to set the state to `foreground`
                exec(null, null, 'LocalNotification', 'resume', []);
            });

            // Necessary to set the state to `foreground`
            exec(null, null, 'LocalNotification', 'resume', []);
        }

        // Merges the platform specific properties into the default properties
        exports.applyPlatformSpecificOptions();
    });
});


/**
 * @private
 *
 * Default values.
 */
exports._defaults = {
    message:    '',
    title:      '',
    autoCancel: false,
@@ -29,24 +69,23 @@ var LocalNotification = function () {
    json:       '',
    repeat:     ''
};
};

LocalNotification.prototype = {

/**
 * Returns the default settings
 *
 * @return {Object}
 */
    getDefaults: function () {
exports.getDefaults = function () {
    return this._defaults;
    },
};

/**
 * Overwrite default settings
 *
 * @param {Object} defaults
 */
    setDefaults: function (newDefaults) {
exports.setDefaults = function (newDefaults) {
    var defaults = this.getDefaults();

    for (var key in defaults) {
@@ -54,86 +93,12 @@ LocalNotification.prototype = {
            defaults[key] = newDefaults[key];
        }
    }
    },

    /**
     * @private
     *
     * Merges custom properties with the default values.
     *
     * @param {Object} options
     *      Set of custom values
     *
     * @retrun {Object}
     *      The merged property list
     */
    mergeWithDefaults: function (options) {
        var defaults = this.getDefaults();

        for (var key in defaults) {
            if (options[key] === undefined) {
                options[key] = defaults[key];
            }
        }

        return options;
    },

    /**
     * @private
     *
     * Merges the platform specific properties into the default properties.
     *
     * @return {Object}
     *      The default properties for the platform
     */
    applyPlatformSpecificOptions: function () {
        var defaults = this._defaults;

        switch (device.platform) {
        case 'Android':
            defaults.icon       = 'icon';
            defaults.smallIcon  = null;
            defaults.ongoing    = false;
            defaults.led        = 'FFFFFF'; /*RRGGBB*/
            defaults.sound      = 'TYPE_NOTIFICATION'; break;
        case 'iOS':
            defaults.sound      = ''; break;
        case 'WinCE': case 'Win32NT':
            defaults.smallImage = null;
            defaults.image      = null;
            defaults.wideImage  = null;
        }

        return defaults;
    },

    /**
     * @private
     *
     * Creates a callback, which will be executed within a specific scope.
     *
     * @param {Function} callbackFn
     *      The callback function
     * @param {Object} scope
     *      The scope for the function
     *
     * @return {Function}
     *      The new callback function
     */
    createCallbackFn: function (callbackFn, scope) {
        if (typeof callbackFn != 'function')
            return;

        return function () {
            callbackFn.apply(scope || this, arguments);
};
    },

/**
 * Add a new entry to the registry
 *
     * @param {Object} options
 * @param {Object} props
 *      The notification properties
 * @param {Function} callback
 *      A function to be called after the notification has been canceled
@@ -143,7 +108,7 @@ LocalNotification.prototype = {
 * @return {Number}
 *      The notification's ID
 */
    add: function (options, callback, scope) {
exports.add = function (props, callback, scope) {
    var options = this.mergeWithDefaults(options),
        fn      = this.createCallbackFn(callback, scope);

@@ -173,10 +138,10 @@ LocalNotification.prototype = {
        };
    }

        cordova.exec(fn, null, 'LocalNotification', 'add', [options]);
    exec(fn, null, 'LocalNotification', 'add', [options]);

    return options.id;
    },
};

/**
 * Cancels the specified notification.
@@ -188,12 +153,11 @@ LocalNotification.prototype = {
 * @param {Object} scope
 *      The scope for the callback function
 */
    cancel: function (id, callback, scope) {
        var id = id.toString(),
            fn = this.createCallbackFn(callback, scope);
exports.cancel = function (id, callback, scope) {
    var fn = this.createCallbackFn(callback, scope);

        cordova.exec(fn, null, 'LocalNotification', 'cancel', [id]);
    },
    exec(fn, null, 'LocalNotification', 'cancel', [id.toString()]);
};

/**
 * Removes all previously registered notifications.
@@ -203,11 +167,11 @@ LocalNotification.prototype = {
 * @param {Object} scope
 *      The scope for the callback function
 */
    cancelAll: function (callback, scope) {
exports.cancelAll = function (callback, scope) {
    var fn = this.createCallbackFn(callback, scope);

        cordova.exec(fn, null, 'LocalNotification', 'cancelAll', []);
    },
    exec(fn, null, 'LocalNotification', 'cancelAll', []);
};

/**
 * Retrieves a list with all currently pending notifications.
@@ -217,11 +181,11 @@ LocalNotification.prototype = {
 * @param {Object} scope
 *      The scope for the callback function
 */
    getScheduledIds: function (callback, scope) {
exports.getScheduledIds = function (callback, scope) {
    var fn = this.createCallbackFn(callback, scope);

        cordova.exec(fn, null, 'LocalNotification', 'getScheduledIds', []);
    },
    exec(fn, null, 'LocalNotification', 'getScheduledIds', []);
};

/**
 * Checks wether a notification with an ID is scheduled.
@@ -233,12 +197,11 @@ LocalNotification.prototype = {
 * @param {Object} scope
 *      The scope for the callback function
 */
    isScheduled: function (id, callback, scope) {
        var id = id.toString(),
            fn = this.createCallbackFn(callback, scope);
exports.isScheduled = function (id, callback, scope) {
    var fn = this.createCallbackFn(callback, scope);

        cordova.exec(fn, null, 'LocalNotification', 'isScheduled', [id]);
    },
    exec(fn, null, 'LocalNotification', 'isScheduled', [id.toString()]);
};

/**
 * Retrieves a list with all triggered notifications.
@@ -248,11 +211,11 @@ LocalNotification.prototype = {
 * @param {Object} scope
 *      The scope for the callback function
 */
    getTriggeredIds: function (callback, scope) {
exports.getTriggeredIds = function (callback, scope) {
    var fn = this.createCallbackFn(callback, scope);

        cordova.exec(fn, null, 'LocalNotification', 'getTriggeredIds', []);
    },
    exec(fn, null, 'LocalNotification', 'getTriggeredIds', []);
};

/**
 * Checks wether a notification with an ID was triggered.
@@ -264,39 +227,45 @@ LocalNotification.prototype = {
 * @param {Object} scope
 *      The scope for the callback function
 */
    isTriggered: function (id, callback, scope) {
        var id = id.toString(),
            fn = this.createCallbackFn(callback, scope);
exports.isTriggered = function (id, callback, scope) {
    var fn = this.createCallbackFn(callback, scope);

        cordova.exec(fn, null, 'LocalNotification', 'isTriggered', [id]);
    },
    exec(fn, null, 'LocalNotification', 'isTriggered', [id.toString()]);
};

/**
     * Informs if the app has the permission to show badges.
 * Informs if the app has the permission to show notifications.
 *
 * @param {Function} callback
 *      The function to be exec as the callback
 * @param {Object?} scope
 *      The callback function's scope
 */
    hasPermission: function (callback, scope) {
exports.hasPermission = function (callback, scope) {
    var fn = this.createCallbackFn(callback, scope);

        if (device.platform == 'iOS') {
            cordova.exec(fn, null, 'LocalNotification', 'hasPermission', []);
        } else if (fn) {
    if (device.platform != 'iOS') {
        fn(true);
        return;
    }
    },

    exec(fn, null, 'LocalNotification', 'hasPermission', []);
};

/**
     * Ask for permission to show badges if not already granted.
 * Ask for permission to show notifications if not already granted.
 *
 * @param {Function} callback
 *      The function to be exec as the callback
 * @param {Object?} scope
 *      The callback function's scope
 */
    promptForPermission: function () {
        if (device.platform == 'iOS') {
            cordova.exec(null, null, 'LocalNotification', 'promptForPermission', []);
        }
    },
exports.promptForPermission = function (callback, scope) {
    if (device.platform != 'iOS')
        return;

    exec(null, null, 'LocalNotification', 'promptForPermission', []);
};

/**
 * Occurs when a notification was added.
@@ -308,7 +277,7 @@ LocalNotification.prototype = {
 * @param {String} json
 *      A custom (JSON) string
 */
    onadd: function (id, state, json) {},
exports.onadd = function (id, state, json) {};

/**
 * Occurs when the notification is triggered.
@@ -320,7 +289,7 @@ LocalNotification.prototype = {
 * @param {String} json
 *      A custom (JSON) string
 */
    ontrigger: function (id, state, json) {},
exports.ontrigger = function (id, state, json) {};

/**
 * Fires after the notification was clicked.
@@ -332,7 +301,7 @@ LocalNotification.prototype = {
 * @param {String} json
 *      A custom (JSON) string
 */
    onclick: function (id, state, json) {},
exports.onclick = function (id, state, json) {};

/**
 * Fires if the notification was canceled.
@@ -344,40 +313,80 @@ LocalNotification.prototype = {
 * @param {String} json
 *      A custom (JSON) string
 */
    oncancel: function (id, state, json) {}
};
exports.oncancel = function (id, state, json) {};

var plugin  = new LocalNotification(),
    channel = require('cordova/channel');

// Called after all 'deviceready' listener are called
channel.deviceready.subscribe( function () {
    // Device is ready now, the listeners are registered and all queued events
    // can be executed now.
    cordova.exec(null, null, 'LocalNotification', 'deviceready', []);
});
/**
 * @private
 *
 * Merges custom properties with the default values.
 *
 * @param {Object} options
 *      Set of custom values
 *
 * @retrun {Object}
 *      The merged property list
 */
exports.mergeWithDefaults = function (options) {
    var defaults = this.getDefaults();

channel.onCordovaReady.subscribe( function () {
    // The cordova device plugin is ready now
    channel.onCordovaInfoReady.subscribe( function () {
        if (device.platform == 'Android') {
            channel.onPause.subscribe( function () {
                // Necessary to set the state to `background`
                cordova.exec(null, null, 'LocalNotification', 'pause', []);
            });
    for (var key in defaults) {
        if (options[key] === undefined) {
            options[key] = defaults[key];
        }
    }

            channel.onResume.subscribe( function () {
                // Necessary to set the state to `foreground`
                cordova.exec(null, null, 'LocalNotification', 'resume', []);
            });
    return options;
};

            // Necessary to set the state to `foreground`
            cordova.exec(null, null, 'LocalNotification', 'resume', []);
/**
 * @private
 *
 * Merges the platform specific properties into the default properties.
 *
 * @return {Object}
 *      The default properties for the platform
 */
exports.applyPlatformSpecificOptions = function () {
    var defaults = this._defaults;

    switch (device.platform) {
    case 'Android':
        defaults.icon       = 'icon';
        defaults.smallIcon  = null;
        defaults.ongoing    = false;
        defaults.led        = 'FFFFFF'; /*RRGGBB*/
        defaults.sound      = 'TYPE_NOTIFICATION'; break;
    case 'iOS':
        defaults.sound      = ''; break;
    case 'WinCE': case 'Win32NT':
        defaults.smallImage = null;
        defaults.image      = null;
        defaults.wideImage  = null;
    }

        // Merges the platform specific properties into the default properties
        plugin.applyPlatformSpecificOptions();
    });
});
    return defaults;
};

/**
 * @private
 *
 * Creates a callback, which will be executed within a specific scope.
 *
 * @param {Function} callbackFn
 *      The callback function
 * @param {Object} scope
 *      The scope for the function
 *
 * @return {Function}
 *      The new callback function
 */
exports.createCallbackFn = function (callbackFn, scope) {
    if (typeof callbackFn != 'function')
        return;

    return function () {
        callbackFn.apply(scope || this, arguments);
    };
};
module.exports = plugin;