Edit SMS automation
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
export type MessageDelayUnit = 'minutes' | 'hours' | 'days';
|
||||
export type MessageDelayUnit = 'minutes' | 'hours' | 'days' | 'weeks' | 'months';
|
||||
|
||||
export const MESSAGE_AUTOMATION_TRIGGERS = [
|
||||
'person_created',
|
||||
@@ -22,7 +22,23 @@ export function delayMs(value: number, unit: MessageDelayUnit): number {
|
||||
const n = Math.max(0, Math.trunc(Number(value) || 0));
|
||||
if (unit === 'minutes') return n * 60_000;
|
||||
if (unit === 'hours') return n * 3_600_000;
|
||||
return n * 86_400_000;
|
||||
if (unit === 'days') return n * 86_400_000;
|
||||
if (unit === 'weeks') return n * 7 * 86_400_000;
|
||||
return n * 30 * 86_400_000;
|
||||
}
|
||||
|
||||
export function addDelay(
|
||||
from: Date,
|
||||
value: number,
|
||||
unit: MessageDelayUnit,
|
||||
): Date {
|
||||
const n = Math.max(0, Math.trunc(Number(value) || 0));
|
||||
if (unit === 'months') {
|
||||
const next = new Date(from.getTime());
|
||||
next.setMonth(next.getMonth() + n);
|
||||
return next;
|
||||
}
|
||||
return new Date(from.getTime() + delayMs(n, unit));
|
||||
}
|
||||
|
||||
export function buildSendAts(
|
||||
@@ -37,9 +53,14 @@ export function buildSendAts(
|
||||
MAX_MESSAGE_REPEAT,
|
||||
Math.max(1, Math.trunc(Number(repeatCount) || 1)),
|
||||
);
|
||||
const first = new Date(now.getTime() + delayMs(startValue, startUnit));
|
||||
const gap = delayMs(Math.max(1, intervalValue), intervalUnit);
|
||||
return Array.from({ length: count }, (_, i) => new Date(first.getTime() + i * gap));
|
||||
const first = addDelay(now, startValue, startUnit);
|
||||
const times = [first];
|
||||
let cursor = first;
|
||||
for (let i = 1; i < count; i += 1) {
|
||||
cursor = addDelay(cursor, Math.max(1, intervalValue), intervalUnit);
|
||||
times.push(cursor);
|
||||
}
|
||||
return times;
|
||||
}
|
||||
|
||||
export function applyMessageTemplate(text: string, title: string): string {
|
||||
|
||||
Reference in New Issue
Block a user