diff --git a/app/drops/account_drop.rb b/app/drops/account_drop.rb index 2e3a2530f..d784475db 100644 --- a/app/drops/account_drop.rb +++ b/app/drops/account_drop.rb @@ -1,2 +1,5 @@ class AccountDrop < BaseDrop + def name + @obj.try(:name) + end end diff --git a/app/helpers/email_helper.rb b/app/helpers/email_helper.rb index 46689ba00..05b6a53e3 100644 --- a/app/helpers/email_helper.rb +++ b/app/helpers/email_helper.rb @@ -10,4 +10,26 @@ module EmailHelper def normalize_email_with_plus_addressing(email) "#{email.split('@').first.split('+').first}@#{email.split('@').last}".downcase end + + def parse_email_variables(conversation, email) + case email + when modified_liquid_content(email) + template = Liquid::Template.parse(modified_liquid_content(email)) + template.render(message_drops(conversation)) + when URI::MailTo::EMAIL_REGEXP + email + end + end + + def modified_liquid_content(email) + # This regex is used to match the code blocks in the content + # We don't want to process liquid in code blocks + email.gsub(/`(.*?)`/m, '{% raw %}`\\1`{% endraw %}') + end + + def message_drops(conversation) + { + 'contact' => ContactDrop.new(conversation.contact) + } + end end diff --git a/app/javascript/dashboard/routes/dashboard/settings/inbox/components/WeeklyAvailability.vue b/app/javascript/dashboard/routes/dashboard/settings/inbox/components/WeeklyAvailability.vue index ecad7814b..5eee329b4 100644 --- a/app/javascript/dashboard/routes/dashboard/settings/inbox/components/WeeklyAvailability.vue +++ b/app/javascript/dashboard/routes/dashboard/settings/inbox/components/WeeklyAvailability.vue @@ -17,7 +17,16 @@