Co-authored-by: Pranav <pranav@chatwoot.com> Co-authored-by: Muhsin Keloth <muhsinkeramam@gmail.com>
27 lines
736 B
Ruby
27 lines
736 B
Ruby
class Mailbox::ConversationFinderStrategies::ReceiverUuidStrategy < Mailbox::ConversationFinderStrategies::BaseStrategy
|
|
# Pattern from ApplicationMailbox::REPLY_EMAIL_UUID_PATTERN
|
|
UUID_PATTERN = /^reply\+([0-9a-f]{8}\b-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-\b[0-9a-f]{12})$/i
|
|
|
|
def find
|
|
uuid = extract_uuid_from_receivers
|
|
return nil unless uuid
|
|
|
|
Conversation.find_by(uuid: uuid)
|
|
end
|
|
|
|
private
|
|
|
|
def extract_uuid_from_receivers
|
|
mail_presenter = MailPresenter.new(mail)
|
|
return nil if mail_presenter.mail_receiver.blank?
|
|
|
|
mail_presenter.mail_receiver.each do |email|
|
|
username = email.split('@').first
|
|
match = username.match(UUID_PATTERN)
|
|
return match[1] if match
|
|
end
|
|
|
|
nil
|
|
end
|
|
end
|