Commit a2b77a2f by Sebastián Katzer

Flatten JS file

parent a21a13bb
......@@ -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,
......@@ -28,25 +68,24 @@ var LocalNotification = function () {
id: '0',
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,12 +138,12 @@ LocalNotification.prototype = {
};
}
cordova.exec(fn, null, 'LocalNotification', 'add', [options]);
exec(fn, null, 'LocalNotification', 'add', [options]);
return options.id;
},
};
/**
/**
* Cancels the specified notification.
*
* @param {String} id
......@@ -188,14 +153,13 @@ 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.
*
* @param {Function} callback
......@@ -203,13 +167,13 @@ 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.
*
* @param {Function} callback
......@@ -217,13 +181,13 @@ 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.
*
* @param {String} id
......@@ -233,14 +197,13 @@ 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.
*
* @param {Function} callback
......@@ -248,13 +211,13 @@ 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.
*
* @param {String} id
......@@ -264,41 +227,47 @@ 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;
}
},
/**
* Ask for permission to show badges if not already granted.
exec(fn, null, 'LocalNotification', 'hasPermission', []);
};
/**
* 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.
*
* @param {String} id
......@@ -308,9 +277,9 @@ 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.
*
* @param {String} id
......@@ -320,9 +289,9 @@ 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.
*
* @param {String} id
......@@ -332,9 +301,9 @@ 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.
*
* @param {String} id
......@@ -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;
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment