feat: Add delivery reports for live chat (#8092)

This commit is contained in:
Muhsin Keloth
2023-10-12 20:48:20 +05:30
committed by GitHub
parent 5c729ccea5
commit 980013abae
5 changed files with 80 additions and 0 deletions

View File

@@ -28,6 +28,7 @@ class Api::V1::Widget::ConversationsController < Api::V1::Widget::BaseController
conversation.contact_last_seen_at = DateTime.now.utc
conversation.save!
::Conversations::MarkMessagesAsReadJob.perform_later(conversation)
head :ok
end

View File

@@ -214,6 +214,10 @@ export default {
if (this.isAWhatsAppChannel || this.isATwilioChannel) {
return this.sourceId && this.isDelivered;
}
// We will consider messages as delivered for web widget inbox if they are sent
if (this.isAWebWidgetInbox) {
return this.isSent;
}
return false;
},

View File

@@ -0,0 +1,13 @@
class Conversations::MarkMessagesAsReadJob < ApplicationJob
queue_as :low
def perform(conversation)
# Mark every message created before the user's viewing time as read.
conversation.messages.where(status: %w[sent delivered])
.where.not(message_type: 'incoming')
.where('created_at <= ?',
conversation.contact_last_seen_at).find_each do |message|
message.update!(status: 'read')
end
end
end