@peopl-health/nexus 4.3.0 → 4.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -57,10 +57,10 @@ const _sendBulkMessages = async (payloads, res, logMessage) => {
57
57
 
58
58
  const sendMessageController = async (req, res) => {
59
59
  if (!_validateMessagingDeps(res)) return;
60
-
60
+
61
61
  const {
62
62
  fileUrl, message, fileType, code,
63
- sendTime = new Date(),
63
+ sendTime,
64
64
  timeZone = 'Etc/GMT',
65
65
  hidePreview = false,
66
66
  contentSid = null,
@@ -71,12 +71,30 @@ const sendMessageController = async (req, res) => {
71
71
 
72
72
  try {
73
73
  const finalVariables = contentSid ? await ensureFlowTokenInVariables(contentSid, variables) : variables;
74
+ const formattedCode = ensureWhatsAppFormat(code);
75
+
76
+ if (!sendTime) {
77
+ const result = await sendMessage({
78
+ fileUrl, body: message, fileType, contentSid, hidePreview,
79
+ variables: finalVariables, code: formattedCode,
80
+ frontendId, triggeredBy
81
+ });
82
+ return res.status(200).json({
83
+ success: result?.success ?? true,
84
+ messageId: _pickMessageId(result, null),
85
+ status: result?.status || null,
86
+ ...(result?.preemptive && {
87
+ preemptive: true,
88
+ note: 'Recipient outside 24h window; template approval in progress, delivery not guaranteed within the next 15 min'
89
+ })
90
+ });
91
+ }
74
92
 
75
93
  const payload = {
76
94
  fileUrl, message, fileType, contentSid, hidePreview, variables: finalVariables,
77
95
  timeZone: timeZone || null,
78
- sendTime: sendTime ? moment.tz(sendTime, timeZone) + 2500 : new Date(),
79
- code: ensureWhatsAppFormat(code),
96
+ sendTime: moment.tz(sendTime, timeZone) + 2500,
97
+ code: formattedCode,
80
98
  frontendId,
81
99
  triggeredBy
82
100
  };
@@ -8,6 +8,7 @@ class RedisQueueAdapter extends QueueAdapter {
8
8
  this.queues = new Map();
9
9
  this.Bull = null;
10
10
  this.redisConfig = config.redis || { host: 'localhost', port: 6379 };
11
+ this.prefix = typeof config.prefix === 'string' ? config.prefix.replace(/:+$/, '') : null;
11
12
  this.defaultJobOptions = config.defaultJobOptions || {
12
13
  attempts: 3,
13
14
  backoff: { type: 'exponential', delay: 1000 },
@@ -30,7 +31,9 @@ class RedisQueueAdapter extends QueueAdapter {
30
31
  if (this.queues.has(jobType)) return this.queues.get(jobType);
31
32
 
32
33
  const Bull = this._loadBull();
33
- const queue = new Bull(jobType, { redis: this.redisConfig });
34
+ const queueOptions = { redis: this.redisConfig };
35
+ if (this.prefix) queueOptions.prefix = this.prefix;
36
+ const queue = new Bull(jobType, queueOptions);
34
37
 
35
38
  queue.on('error', (err) => logger.error('[RedisQueueAdapter] Queue error', { jobType, error: err.message }));
36
39
  queue.on('failed', (job, err) => logger.error('[RedisQueueAdapter] Job failed', { jobId: job.id, error: err.message }));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@peopl-health/nexus",
3
- "version": "4.3.0",
3
+ "version": "4.3.2",
4
4
  "description": "Core messaging and assistant library for WhatsApp communication platforms",
5
5
  "keywords": [
6
6
  "whatsapp",