Skip to content

Commit 8773d7e

Browse files
authored
Merge pull request #6246 from Countly/SER-2429-option-deliver-the-message-next-day-is-not-working-master
[SER-2429] Enable reschedule option
2 parents 868a62c + bf93955 commit 8773d7e

File tree

2 files changed

+37
-4
lines changed

2 files changed

+37
-4
lines changed

plugins/push/api/send/data/trigger.js

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -160,10 +160,11 @@ class Trigger extends Validatable {
160160
class PlainTrigger extends Trigger {
161161
/**
162162
* Constructor
163-
*
163+
*
164164
* @param {object} data filter data
165165
* @param {boolean} data.tz in case tz = true, sctz is scheduler's timezone offset in minutes (GMT +3 is "-180")
166166
* @param {number} data.sctz scheduler's timezone offset in minutes (GMT +3 is "-180")
167+
* @param {boolean} data.reschedule allow rescheduling to next day when sending on "time" is not an option
167168
* @param {boolean} delayed true if audience calculation should be done right before sending the message
168169
*/
169170
constructor(data) {
@@ -180,12 +181,13 @@ class PlainTrigger extends Trigger {
180181
tz: {type: 'Boolean', required: false},
181182
sctz: {type: 'Number', required: false},
182183
delayed: {type: 'Boolean', required: false},
184+
reschedule: {type: 'Boolean', required: false},
183185
});
184186
}
185187

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

195197
/**
196198
* Set scheduler's timezone offset, effectively setting `tz` prop as well
197-
*
199+
*
198200
* @param {number|undefined} sctz scheduler's timezone offset in seconds (GMT +3 = `-180`)
199201
*/
200202
set sctz(sctz) {
@@ -240,6 +242,29 @@ class PlainTrigger extends Trigger {
240242
delete this._data.delayed;
241243
}
242244
}
245+
246+
/**
247+
* Getter for reschedule
248+
*
249+
* @returns {boolean} allow rescheduling to next day when sending on "time" is not an option
250+
*/
251+
get reschedule() {
252+
return this._data.reschedule || false;
253+
}
254+
255+
/**
256+
* Setter for reschedule
257+
*
258+
* @param {boolean|undefined} reschedule allow rescheduling to next day when sending on "time" is not an option
259+
*/
260+
set reschedule(reschedule) {
261+
if (reschedule !== null && reschedule !== undefined) {
262+
this._data.reschedule = reschedule;
263+
}
264+
else {
265+
delete this._data.reschedule;
266+
}
267+
}
243268
}
244269

245270
/**
@@ -248,7 +273,7 @@ class PlainTrigger extends Trigger {
248273
class AutoTrigger extends Trigger {
249274
/**
250275
* Constructor
251-
*
276+
*
252277
* @param {object|null} data filter data
253278
* @param {Date} data.end message end date (don't send anything after this date, set status to Stopped)
254279
* @param {boolean} data.actuals whether to use server calculation date (false) or event/cohort entry date for scheduling (true)

plugins/push/frontend/public/javascripts/countly.models.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1863,13 +1863,17 @@
18631863
var result = {
18641864
kind: 'plain',
18651865
start: model.delivery.startDate,
1866+
reschedule: false,
18661867
};
18671868
if (model.delivery.type === SendEnum.LATER) {
18681869
if (model.timezone === TimezoneEnum.DEVICE) {
18691870
result.tz = true;
18701871
result.sctz = new Date().getTimezoneOffset();
18711872
}
18721873
}
1874+
if (model.oneTime?.pastSchedule === PastScheduleEnum.NEXT_DAY) {
1875+
result.reschedule = true;
1876+
}
18731877
result.delayed = model[TypeEnum.ONE_TIME].audienceSelection === AudienceSelectionEnum.BEFORE;
18741878
return [result];
18751879
},
@@ -1878,6 +1882,7 @@
18781882
kind: model.automatic.trigger === TriggerEnum.EVENT ? 'event' : 'cohort',
18791883
start: model.delivery.startDate,
18801884
actuals: model.automatic.deliveryDateCalculation === DeliveryDateCalculationEnum.EVENT_DEVICE_DATE,
1885+
reschedule: false,
18811886
};
18821887
if (options.isEndDateSet) {
18831888
result.end = model.delivery.endDate;
@@ -1912,6 +1917,9 @@
19121917
result.entry = model.automatic.trigger === TriggerEnum.COHORT_ENTRY,
19131918
result.cancels = model.automatic.triggerNotMet === TriggerNotMetEnum.CANCEL_ON_EXIT;
19141919
}
1920+
if (model.automatic.pastSchedule === PastScheduleEnum.NEXT_DAY) {
1921+
result.reschedule = true;
1922+
}
19151923
return [result];
19161924
},
19171925
mapTransactionalTrigger: function(model) {

0 commit comments

Comments
 (0)