Przeglądaj źródła

Better type checking

Sebastián Katzer 11 lat temu
rodzic
commit
e604108996
1 zmienionych plików z 39 dodań i 14 usunięć
  1. 39 14
      www/local-notification.js

+ 39 - 14
www/local-notification.js

@@ -159,7 +159,7 @@ exports.update = function (opts, callback, scope) {
 exports.clear = function (ids, callback, scope) {
     ids = Array.isArray(ids) ? ids : [ids];
 
-	ids = this.convertIds(ids);
+    ids = this.convertIds(ids);
 
     this.exec('clear', ids, callback, scope);
 };
@@ -488,12 +488,22 @@ exports.onclear = function (id, state, json, data) {};
 exports.mergeWithDefaults = function (options) {
     var defaults = this.getDefaults();
 
+    options.date    = this.getValueFor(options, 'date', 'at', 'firstAt');
+    options.repeat  = this.getValueFor(options, 'repeat', 'every');
+    options.message = this.getValueFor(options, 'message', 'text');
+
     for (var key in defaults) {
         if (options[key] === null || options[key] === undefined) {
             options[key] = defaults[key];
         }
     }
 
+    for (key in options) {
+        if (!defaults.hasOwnProperty(key)) {
+            delete options[key];
+        }
+    }
+
     return options;
 };
 
@@ -509,24 +519,18 @@ exports.mergeWithDefaults = function (options) {
  *      The converted property list
  */
 exports.convertProperties = function (options) {
-    if (options.id) {
-        options.id = options.id.toString();
-    }
 
-    if (options.date === undefined) {
+    if (options.date === undefined || options.date === null) {
         options.date = new Date();
     }
 
-    if (options.title) {
-        options.title = options.title.toString();
-    }
-
-    if (options.message) {
-        options.message = options.message.toString();
-    }
+    options.id         = options.id.toString();
+    options.title      = options.title.toString();
+    options.message    = options.message.toString();
+    options.autoCancel = options.autoCancel === true;
 
-    if (options.text) {
-        options.message = options.text.toString();
+    if (isNaN(options.badge)) {
+        options.badge = this.getDefaults().badge;
     }
 
     if (typeof options.date == 'object') {
@@ -610,6 +614,27 @@ exports.convertIds = function (ids) {
     return convertedIds;
 };
 
+/**
+ * @private
+ *
+ * Return the first found value for the given keys.
+ *
+ * @param {Object} options
+ *      Object with key-value properties
+ *
+ * @param {String[]} keys*
+ *      Key list
+ */
+exports.getValueFor = function (options) {
+    var keys = Array.apply(null, arguments).slice(1);
+
+    for (var key in keys) {
+        if (options.hasOwnProperty(key)) {
+            return options[key];
+        }
+    }
+};
+
 /**
  * @private
  *