* feat(mailer): add i18n support for all transactional emails with pt-BR translations - Create Liquid i18n filter (LiquidFilters::I18nFilter) exposing I18n.t() as `t` filter with interpolation support via positional args - Replace hardcoded English strings in all 26 Liquid email templates with i18n keys - Replace hardcoded English strings in all 5 Devise ERB email templates (OSS + enterprise) with t() calls, using raw output (<%==) to prevent HTML-encoding of apostrophes - Translate all mailer subjects to use I18n.t() for locale-aware rendering - Add comprehensive pt-BR translations for all transactional emails - Add SSO-specific i18n keys for enterprise confirmation instructions - Fix ApplicationRecord#to_drop to walk STI hierarchy (e.g. SuperAdmin -> UserDrop) * fix: address CodeRabbit review feedback - Use _html suffix for Devise translation keys to prevent XSS while keeping apostrophes unencoded (Rails escapes interpolations automatically) - Replace hardcoded English in SLA templates with full_body i18n keys - Fix _target="blank" typo to target="_blank" in attachment links - Add i18n for tiktok_disconnect subject and create liquid template - Extract brand_name to private method in AccountNotificationMailer * fix: address round 2 review feedback Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
35 lines
1.0 KiB
Ruby
35 lines
1.0 KiB
Ruby
class TeamNotifications::AutomationNotificationMailer < ApplicationMailer
|
|
def conversation_creation(conversation, team, message)
|
|
return unless smtp_config_set_or_development?
|
|
|
|
@agents = team.team_members
|
|
@conversation = conversation
|
|
@custom_message = message
|
|
@action_url = app_account_conversation_url(account_id: @conversation.account_id, id: @conversation.display_id)
|
|
|
|
send_an_email_to_team
|
|
end
|
|
|
|
private
|
|
|
|
def send_an_email_to_team
|
|
subject = I18n.t('mailer.team_notifications.automation.subject')
|
|
@action_url = app_account_conversation_url(account_id: @conversation.account_id, id: @conversation.display_id)
|
|
@agent_emails = @agents.collect(&:user).pluck(:email)
|
|
send_mail_with_liquid(to: @agent_emails, subject: subject) and return
|
|
end
|
|
|
|
def liquid_droppables
|
|
super.merge!({
|
|
conversation: @conversation,
|
|
inbox: @conversation.inbox
|
|
})
|
|
end
|
|
|
|
def liquid_locals
|
|
super.merge!({
|
|
custom_message: @custom_message
|
|
})
|
|
end
|
|
end
|