52 lines
1.4 KiB
Ruby
52 lines
1.4 KiB
Ruby
class Email::FromBuilder < Email::BaseBuilder
|
|
pattr_initialize [:inbox!, :message!]
|
|
|
|
def build
|
|
return sender_name(account_support_email) unless inbox.email?
|
|
|
|
from_email = case email_channel_type
|
|
when :standard_imap_smtp,
|
|
:google_oauth,
|
|
:microsoft_oauth,
|
|
:forwarding_own_smtp
|
|
channel.email
|
|
when :imap_chatwoot_smtp,
|
|
:forwarding_chatwoot_smtp
|
|
channel.verified_for_sending ? channel.email : account_support_email
|
|
else
|
|
account_support_email
|
|
end
|
|
|
|
sender_name(from_email)
|
|
end
|
|
|
|
private
|
|
|
|
def email_channel_type
|
|
return :google_oauth if channel.google?
|
|
return :microsoft_oauth if channel.microsoft?
|
|
return :standard_imap_smtp if imap_and_smtp_enabled?
|
|
return :imap_chatwoot_smtp if imap_enabled_without_smtp?
|
|
return :forwarding_own_smtp if forwarding_with_own_smtp?
|
|
return :forwarding_chatwoot_smtp if forwarding_without_smtp?
|
|
|
|
:unknown
|
|
end
|
|
|
|
def imap_and_smtp_enabled?
|
|
channel.imap_enabled && channel.smtp_enabled
|
|
end
|
|
|
|
def imap_enabled_without_smtp?
|
|
channel.imap_enabled && !channel.smtp_enabled
|
|
end
|
|
|
|
def forwarding_with_own_smtp?
|
|
!channel.imap_enabled && channel.smtp_enabled
|
|
end
|
|
|
|
def forwarding_without_smtp?
|
|
!channel.imap_enabled && !channel.smtp_enabled
|
|
end
|
|
end
|