@peopl-health/nexus 4.1.6 → 4.1.7

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.
@@ -1,7 +1,7 @@
1
1
  const { logger } = require('../utils/logger');
2
2
 
3
3
  const { Message } = require('../models/messageModel');
4
- const { DeliveryAttempt } = require('../models/deliveryAttemptModel');
4
+ const { DeliveryAttempt, DELIVERY_ATTEMPT_TERMINAL_STATUSES } = require('../models/deliveryAttemptModel');
5
5
 
6
6
  async function recordDeliveryAttempt({
7
7
  messageData = null, messageId = null, twilioResult = null, kind, body = null,
@@ -61,7 +61,7 @@ async function updateDeliveryAttemptByTwilioSid(twilioSid, { status, errorCode =
61
61
  ...(errorMessage != null && { errorMessage })
62
62
  };
63
63
  const attempt = await DeliveryAttempt.findOneAndUpdate(
64
- { twilioSid },
64
+ { twilioSid, status: { $nin: DELIVERY_ATTEMPT_TERMINAL_STATUSES } },
65
65
  { $set: update },
66
66
  { new: true }
67
67
  );
@@ -4,7 +4,7 @@ const { logger } = require('../utils/logger');
4
4
  const { createEvent, safeEmit } = require('../utils/eventUtils');
5
5
 
6
6
  const { Message } = require('../models/messageModel');
7
- const { DeliveryAttempt } = require('../models/deliveryAttemptModel');
7
+ const { DeliveryAttempt, DELIVERY_ATTEMPT_TERMINAL_STATUSES } = require('../models/deliveryAttemptModel');
8
8
 
9
9
  const { handle24HourWindowError } = require('../helpers/templateRecoveryHelper');
10
10
  const { updateDeliveryAttemptByTwilioSid } = require('../helpers/deliveryAttemptHelper');
@@ -21,8 +21,10 @@ async function updateMessageStatus(messageSid, status, errorCode = null, errorMe
21
21
  ...(errorMessage && { 'statusInfo.errorMessage': errorMessage })
22
22
  };
23
23
 
24
+ const notTerminal = { 'statusInfo.status': { $nin: DELIVERY_ATTEMPT_TERMINAL_STATUSES } };
25
+
24
26
  let updated = await Message.findOneAndUpdate(
25
- { message_id: messageSid },
27
+ { message_id: messageSid, ...notTerminal },
26
28
  { $set: updateData },
27
29
  { new: true }
28
30
  );
@@ -31,7 +33,7 @@ async function updateMessageStatus(messageSid, status, errorCode = null, errorMe
31
33
  const attempt = await DeliveryAttempt.findOne({ twilioSid: messageSid }, '_id messageId').lean();
32
34
  if (attempt?.messageId) {
33
35
  updated = await Message.findOneAndUpdate(
34
- { _id: attempt.messageId },
36
+ { _id: attempt.messageId, ...notTerminal },
35
37
  { $set: updateData },
36
38
  { new: true }
37
39
  );
@@ -2,6 +2,7 @@ const mongoose = require('mongoose');
2
2
 
3
3
  const KIND_VALUES = ['freeform', 'template', 'recovery_template', 'recovery_template_setup'];
4
4
  const STATUS_VALUES = [null, 'queued', 'sending', 'sent', 'delivered', 'undelivered', 'failed', 'read'];
5
+ const TERMINAL_STATUS_VALUES = ['delivered', 'read', 'failed', 'undelivered'];
5
6
  const ERROR_SOURCE_VALUES = [null, 'twilio_sync', 'twilio_async', 'server'];
6
7
 
7
8
  const deliveryAttemptSchema = new mongoose.Schema({
@@ -45,5 +46,6 @@ module.exports = {
45
46
  DeliveryAttempt,
46
47
  DELIVERY_ATTEMPT_KINDS: KIND_VALUES,
47
48
  DELIVERY_ATTEMPT_STATUSES: STATUS_VALUES,
49
+ DELIVERY_ATTEMPT_TERMINAL_STATUSES: TERMINAL_STATUS_VALUES,
48
50
  DELIVERY_ATTEMPT_ERROR_SOURCES: ERROR_SOURCE_VALUES
49
51
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@peopl-health/nexus",
3
- "version": "4.1.6",
3
+ "version": "4.1.7",
4
4
  "description": "Core messaging and assistant library for WhatsApp communication platforms",
5
5
  "keywords": [
6
6
  "whatsapp",