diff --git a/app/builders/messages/facebook/message_builder.rb b/app/builders/messages/facebook/message_builder.rb index 53c6147e6..2b4ae8bf2 100644 --- a/app/builders/messages/facebook/message_builder.rb +++ b/app/builders/messages/facebook/message_builder.rb @@ -56,9 +56,13 @@ class Messages::Facebook::MessageBuilder < Messages::Messenger::MessageBuilder @conversation ||= set_conversation_based_on_inbox_config end + def facebook_direct_message_conversation + Conversation.where(conversation_params).order(created_at: :desc).first + end + def set_conversation_based_on_inbox_config if @inbox.lock_to_single_conversation - Conversation.find_by(conversation_params) || build_conversation + facebook_direct_message_conversation || build_conversation else find_or_build_for_multiple_conversations end @@ -66,10 +70,13 @@ class Messages::Facebook::MessageBuilder < Messages::Messenger::MessageBuilder def find_or_build_for_multiple_conversations # If lock to single conversation is disabled, we will create a new conversation if previous conversation is resolved - last_conversation = Conversation.where(conversation_params).where.not(status: :resolved).order(created_at: :desc).first - return build_conversation if last_conversation.nil? + last_conversation = facebook_direct_message_conversation - last_conversation + if last_conversation.nil? || last_conversation.resolved? + build_conversation + else + last_conversation + end end def build_conversation diff --git a/app/builders/messages/instagram/message_builder.rb b/app/builders/messages/instagram/message_builder.rb index 24889d205..7e2f3b9ea 100644 --- a/app/builders/messages/instagram/message_builder.rb +++ b/app/builders/messages/instagram/message_builder.rb @@ -74,19 +74,19 @@ class Messages::Instagram::MessageBuilder < Messages::Messenger::MessageBuilder def instagram_direct_message_conversation Conversation.where(conversation_params) - .where("additional_attributes ->> 'type' = 'instagram_direct_message'") + .where("additional_attributes ->> 'type' = 'instagram_direct_message'").order(created_at: :desc).first end def set_conversation_based_on_inbox_config if @inbox.lock_to_single_conversation - instagram_direct_message_conversation.first || build_conversation + instagram_direct_message_conversation || build_conversation else find_or_build_for_multiple_conversations end end def find_or_build_for_multiple_conversations - last_conversation = instagram_direct_message_conversation.order(created_at: :desc).first + last_conversation = instagram_direct_message_conversation if last_conversation.nil? || last_conversation.resolved? build_conversation