@snugdesk/whatsapp-widget 0.2.13 → 0.2.16

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.
@@ -3101,8 +3101,7 @@ class WhatsAppMessagesComponent {
3101
3101
  message.interactionAttendee = interactionAttendee;
3102
3102
  }
3103
3103
  if (message.interactionAttendee?.entityId) {
3104
- this.isRestrictedToTemplateReplies = false;
3105
- this.startCountdownTimer(24 * 60 * 60); // 24 hours in seconds
3104
+ this.updateTemplateRestrictionFromInbound(message);
3106
3105
  // Update the selected tenant phone number to the one receiving the new message
3107
3106
  this.selectedWABAPhoneNumber =
3108
3107
  this.wabaPhoneNumbers.find((phoneNumber) => this.cleanPhoneNumber(phoneNumber.display_phone_number) ===
@@ -3828,8 +3827,7 @@ class WhatsAppMessagesComponent {
3828
3827
  !this.selectedEntityConversationMessages?.length ||
3829
3828
  !lastInteraction ||
3830
3829
  !!lastInteraction.completedAt ||
3831
- lastInteraction.status === 'DISCONNECTED' ||
3832
- this.getCurrentTime() - lastMessage?.createdAt > 24 * 60 * 60);
3830
+ lastInteraction.status === 'DISCONNECTED');
3833
3831
  }
3834
3832
  toggleMessageTemplatePopup() {
3835
3833
  this.showTemplatePopup = !this.showTemplatePopup;
@@ -3858,9 +3856,6 @@ class WhatsAppMessagesComponent {
3858
3856
  textarea.style.height = 'auto';
3859
3857
  textarea.style.height = textarea.scrollHeight + 'px';
3860
3858
  }
3861
- getCurrentTime() {
3862
- return moment.utc().unix();
3863
- }
3864
3859
  startCountdownTimer(remainingTime) {
3865
3860
  if (this.countdownInterval) {
3866
3861
  clearInterval(this.countdownInterval);
@@ -4161,8 +4156,10 @@ class WhatsAppMessagesComponent {
4161
4156
  const res_whatsappMessages = await this.fetchEntityConversationMessages(entityConversation.id);
4162
4157
  this.selectedEntityConversationMessages = res_whatsappMessages || [];
4163
4158
  this.interactionMessageByEntityConversationIdSubscription = this.subscribeToEntityConversationMessages(entityConversation.id);
4164
- if (!this.selectedEntityConversationMessages?.length)
4159
+ if (!this.selectedEntityConversationMessages?.length) {
4160
+ this.isRestrictedToTemplateReplies = true;
4165
4161
  return;
4162
+ }
4166
4163
  this.updateSelectedPhoneFromLastMessage();
4167
4164
  const latestInteraction = entityConversation?.interactions?.items?.[0];
4168
4165
  if (latestInteraction && !latestInteraction.deletedAt && !latestInteraction.completedAt) {
@@ -4181,18 +4178,29 @@ class WhatsAppMessagesComponent {
4181
4178
  this.selectedWABAPhoneNumber = this.wabaPhoneNumbers.find((phoneNumber) => this.cleanPhoneNumber(phoneNumber.display_phone_number) === this.cleanPhoneNumber(lastConversationMessage.endpoint?.address)) || this.wabaPhoneNumbers?.[0];
4182
4179
  }
4183
4180
  async updateTemplateRestriction(latestInteraction, entityConversation) {
4184
- const lastEntityMessage = await this.getLastEntityInteractionMessage(latestInteraction.id, entityConversation?.entityId);
4185
- if (!lastEntityMessage) {
4186
- this.isRestrictedToTemplateReplies = true;
4187
- return;
4188
- }
4181
+ const lastInboundMessageFromList = this.getLastInboundMessageFromMessages();
4182
+ const lastInboundMessage = lastInboundMessageFromList ??
4183
+ (await this.getLastEntityInteractionMessage(latestInteraction.id, entityConversation?.entityId));
4184
+ this.updateTemplateRestrictionFromInbound(lastInboundMessage);
4185
+ }
4186
+ updateTemplateRestrictionFromInbound(lastInboundMessage) {
4189
4187
  const now = moment.utc().unix();
4190
- const twentyFourHoursInSeconds = 24 * 60 * 60;
4191
- const messageAgeInSeconds = now - lastEntityMessage.createdAt;
4192
- this.isRestrictedToTemplateReplies = messageAgeInSeconds > twentyFourHoursInSeconds;
4193
- if (!this.isRestrictedToTemplateReplies) {
4194
- this.startCountdownTimer(lastEntityMessage.createdAt + twentyFourHoursInSeconds - now);
4188
+ const replyWindowSeconds = 24 * 60 * 60;
4189
+ const isRestricted = !lastInboundMessage || now - lastInboundMessage.createdAt > replyWindowSeconds;
4190
+ this.isRestrictedToTemplateReplies = isRestricted;
4191
+ if (!isRestricted && lastInboundMessage) {
4192
+ this.startCountdownTimer(lastInboundMessage.createdAt + replyWindowSeconds - now);
4193
+ }
4194
+ }
4195
+ getLastInboundMessageFromMessages() {
4196
+ for (let i = this.selectedEntityConversationMessages.length - 1; i >= 0; i--) {
4197
+ const msg = this.selectedEntityConversationMessages[i];
4198
+ const attendee = msg?.interactionAttendee ?? this.interactionAttendeesMap?.[msg?.interactionAttendeeId];
4199
+ if (attendee?.entityId && !msg?.deletedAt) {
4200
+ return msg;
4201
+ }
4195
4202
  }
4203
+ return undefined;
4196
4204
  }
4197
4205
  isEntityConversationInactive() {
4198
4206
  return !!this.entity?.blockedAt || !!this.entity?.deletedAt || !!this.selectedEntityConversation?.blockedAt || !!this.selectedEntityConversation?.deletedAt;