Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 29 additions & 4 deletions plugins/push/api/send/data/trigger.js
Original file line number Diff line number Diff line change
Expand Up @@ -160,10 +160,11 @@ class Trigger extends Validatable {
class PlainTrigger extends Trigger {
/**
* Constructor
*
*
* @param {object} data filter data
* @param {boolean} data.tz in case tz = true, sctz is scheduler's timezone offset in minutes (GMT +3 is "-180")
* @param {number} data.sctz scheduler's timezone offset in minutes (GMT +3 is "-180")
* @param {boolean} data.reschedule allow rescheduling to next day when sending on "time" is not an option
* @param {boolean} delayed true if audience calculation should be done right before sending the message
*/
constructor(data) {
Expand All @@ -180,12 +181,13 @@ class PlainTrigger extends Trigger {
tz: {type: 'Boolean', required: false},
sctz: {type: 'Number', required: false},
delayed: {type: 'Boolean', required: false},
reschedule: {type: 'Boolean', required: false},
});
}

/**
* Getter for sctz
*
*
* @returns {number|undefined} in case tz = true, this is scheduler's timezone offset in minutes (GMT +3 is "-180")
*/
get sctz() {
Expand All @@ -194,7 +196,7 @@ class PlainTrigger extends Trigger {

/**
* Set scheduler's timezone offset, effectively setting `tz` prop as well
*
*
* @param {number|undefined} sctz scheduler's timezone offset in seconds (GMT +3 = `-180`)
*/
set sctz(sctz) {
Expand Down Expand Up @@ -240,6 +242,29 @@ class PlainTrigger extends Trigger {
delete this._data.delayed;
}
}

/**
* Getter for reschedule
*
* @returns {boolean} allow rescheduling to next day when sending on "time" is not an option
*/
get reschedule() {
return this._data.reschedule || false;
}

/**
* Setter for reschedule
*
* @param {boolean|undefined} reschedule allow rescheduling to next day when sending on "time" is not an option
*/
set reschedule(reschedule) {
if (reschedule !== null && reschedule !== undefined) {
this._data.reschedule = reschedule;
}
else {
delete this._data.reschedule;
}
}
}

/**
Expand All @@ -248,7 +273,7 @@ class PlainTrigger extends Trigger {
class AutoTrigger extends Trigger {
/**
* Constructor
*
*
* @param {object|null} data filter data
* @param {Date} data.end message end date (don't send anything after this date, set status to Stopped)
* @param {boolean} data.actuals whether to use server calculation date (false) or event/cohort entry date for scheduling (true)
Expand Down
8 changes: 8 additions & 0 deletions plugins/push/frontend/public/javascripts/countly.models.js
Original file line number Diff line number Diff line change
Expand Up @@ -1863,13 +1863,17 @@
var result = {
kind: 'plain',
start: model.delivery.startDate,
reschedule: false,
};
if (model.delivery.type === SendEnum.LATER) {
if (model.timezone === TimezoneEnum.DEVICE) {
result.tz = true;
result.sctz = new Date().getTimezoneOffset();
}
}
if (model.oneTime?.pastSchedule === PastScheduleEnum.NEXT_DAY) {
result.reschedule = true;
}
result.delayed = model[TypeEnum.ONE_TIME].audienceSelection === AudienceSelectionEnum.BEFORE;
return [result];
},
Expand All @@ -1878,6 +1882,7 @@
kind: model.automatic.trigger === TriggerEnum.EVENT ? 'event' : 'cohort',
start: model.delivery.startDate,
actuals: model.automatic.deliveryDateCalculation === DeliveryDateCalculationEnum.EVENT_DEVICE_DATE,
reschedule: false,
};
if (options.isEndDateSet) {
result.end = model.delivery.endDate;
Expand Down Expand Up @@ -1912,6 +1917,9 @@
result.entry = model.automatic.trigger === TriggerEnum.COHORT_ENTRY,
result.cancels = model.automatic.triggerNotMet === TriggerNotMetEnum.CANCEL_ON_EXIT;
}
if (model.automatic.pastSchedule === PastScheduleEnum.NEXT_DAY) {
result.reschedule = true;
}
return [result];
},
mapTransactionalTrigger: function(model) {
Expand Down
Loading