@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.
|
|
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
|
|
4185
|
-
|
|
4186
|
-
this.
|
|
4187
|
-
|
|
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
|
|
4191
|
-
const
|
|
4192
|
-
this.isRestrictedToTemplateReplies =
|
|
4193
|
-
if (!
|
|
4194
|
-
this.startCountdownTimer(
|
|
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;
|