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
5 changes: 4 additions & 1 deletion plugins/push/api/send/audience.js
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,9 @@ class Audience {
if (!project.tk) {
project.tk = 1;
}
if (!project.tz) {
project.tz = 1;
}
steps.push({$project: project});
}

Expand Down Expand Up @@ -424,7 +427,7 @@ class PlainApiMapper extends Mapper {
map(user, date, c, offset = 0) {
let d = date.getTime();
if (this.trigger.tz) {
let utz = (user.tz === undefined || user.tz === null ? this.offset || 0 : user.tz || 0) * 60000;
let utz = (user.tz === undefined || user.tz === null ? this.offset || 0 : parseFloat(user.tz) || 0) * 60000;
d = date.getTime() - this.trigger.sctz * 60000 - utz;

if (d < Date.now()) {
Expand Down
1 change: 1 addition & 0 deletions plugins/push/api/send/data/const.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ const MEDIA_MIME_ANDROID = [

const DEFAULTS = {
schedule_ahead: 5 * 60000, // schedule job needs to be scheduled this much ms prior to the job date
schedule_ahead_tz: 24 * 60 * 60000, // schedule job needs to be scheduled this much ms prior to the job date if we send in users' timezones
queue_insert_batch: 100000, // insert into "push" collection in batches of 100 000 records
max_media_size: 1024 * 1024 // 1Mb is a very conservative limit for media attachments
};
Expand Down
7 changes: 5 additions & 2 deletions plugins/push/api/send/data/message.js
Original file line number Diff line number Diff line change
Expand Up @@ -532,7 +532,7 @@ class Message extends Mongoable {
*/
get needsScheduling() {
return this.state === State.Created && this.triggers.filter(t => t.kind === TriggerKind.Plain &&
(!t.delayed || (t.delayed && t.start.getTime() > Date.now() - 5 * 60000))).length > 0;
(!t.delayed || (t.delayed && !t.tz && t.start.getTime() > Date.now() - DEFAULTS.schedule_ahead) || (t.delayed && t.tz && t.start.getTime() > Date.now() - DEFAULTS.schedule_ahead_tz))).length > 0;
}

/**
Expand Down Expand Up @@ -659,7 +659,10 @@ class Message extends Mongoable {
}
});
}
let date = plain.delayed ? plain.start.getTime() - DEFAULTS.schedule_ahead : Date.now();
let date = Date.now();
if (plain.delayed) {
date = plain.start.getTime() - (plain.tz ? DEFAULTS.schedule_ahead_tz : DEFAULTS.schedule_ahead);
}
await require('../../../../../api/parts/jobs').job('push:schedule', {mid: this._id, aid: this.app}).replace().once(date);
}
if (this.triggerAutoOrApi() && (this.is(State.Done) || this.state === State.Created)) {
Expand Down
Loading