Преглед изворни кода

Some fixes in convertTrigger to only include valid value-pairs

Sebastián Katzer пре 8 година
родитељ
комит
46dc0daea3
1 измењених фајлова са 15 додато и 10 уклоњено
  1. 15 10
      www/local-notification-util.js

+ 15 - 10
www/local-notification-util.js

@@ -191,10 +191,7 @@ exports.convertActions = function (options) {
  * @return [ Map ] Interaction object with trigger spec.
  */
 exports.convertTrigger = function (options) {
-    var cfg      = options.trigger,
-        isDate   = Date.prototype.isPrototypeOf(cfg),
-        isObject = Object.prototype.isPrototypeOf(cfg),
-        trigger  = !isDate && isObject ? cfg : {},
+    var trigger  = options.trigger || {},
         date     = this.getValueFor(trigger, 'at', 'firstAt', 'date');
 
     if (!trigger.type) {
@@ -204,18 +201,22 @@ exports.convertTrigger = function (options) {
     var isCal = trigger.type == 'calendar';
 
     if (isCal && !date) {
-        date = this.getValueFor(options, 'at', 'firstAt', 'date') || new Date();
-    }
-
-    if (isCal) {
-        date = typeof date == 'object' ? date.getTime() : date;
-        trigger.at = Math.round(date / 1000);
+        date = this.getValueFor(options, 'at', 'firstAt', 'date');
     }
 
     if (isCal && !trigger.every && options.every) {
         trigger.every = options.every;
     }
 
+    if (isCal && (trigger.in || trigger.every)) {
+        date = null;
+    }
+
+    if (isCal && date) {
+        date       = typeof date == 'object' ? date.getTime() : date;
+        trigger.at = Math.round(date / 1000);
+    }
+
     if (!trigger.count && device.platform == 'windows') {
         trigger.count = trigger.every ? 5 : 1;
     }
@@ -230,6 +231,10 @@ exports.convertTrigger = function (options) {
         trigger.radius        = trigger.radius || 5;
     }
 
+    if (!isCal || trigger.at) {
+        delete trigger.every;
+    }
+
     delete options.every;
     delete options.at;
     delete options.firstAt;