diff --git a/app/builders/messages/message_builder.rb b/app/builders/messages/message_builder.rb index ba5861859..aca06cd04 100644 --- a/app/builders/messages/message_builder.rb +++ b/app/builders/messages/message_builder.rb @@ -49,10 +49,10 @@ class Messages::MessageBuilder return unless @conversation.inbox&.inbox_type == 'Email' cc_emails = [] - cc_emails = @params[:cc_emails].split(',') if @params[:cc_emails].present? + cc_emails = @params[:cc_emails].gsub(/\s+/, '').split(',') if @params[:cc_emails].present? bcc_emails = [] - bcc_emails = @params[:bcc_emails].split(',') if @params[:bcc_emails].present? + bcc_emails = @params[:bcc_emails].gsub(/\s+/, '').split(',') if @params[:bcc_emails].present? all_email_addresses = cc_emails + bcc_emails validate_email_addresses(all_email_addresses) diff --git a/app/javascript/dashboard/components/widgets/conversation/helpers/emailHeadHelper.js b/app/javascript/dashboard/components/widgets/conversation/helpers/emailHeadHelper.js index ad36393a7..5304627c4 100644 --- a/app/javascript/dashboard/components/widgets/conversation/helpers/emailHeadHelper.js +++ b/app/javascript/dashboard/components/widgets/conversation/helpers/emailHeadHelper.js @@ -2,6 +2,6 @@ import emailValidator from 'vuelidate/lib/validators/email'; export const validEmailsByComma = value => { if (!value.length) return true; - const emails = value.split(','); + const emails = value.replace(/\s+/g, '').split(','); return emails.every(email => emailValidator(email)); }; diff --git a/app/javascript/dashboard/components/widgets/conversation/helpers/specs/emailHeadHelper.spec.js b/app/javascript/dashboard/components/widgets/conversation/helpers/specs/emailHeadHelper.spec.js index 2275a810b..7c9142ee4 100644 --- a/app/javascript/dashboard/components/widgets/conversation/helpers/specs/emailHeadHelper.spec.js +++ b/app/javascript/dashboard/components/widgets/conversation/helpers/specs/emailHeadHelper.spec.js @@ -10,4 +10,7 @@ describe('#validEmailsByComma', () => { it('returns false when one of the email passed is invalid', () => { expect(validEmailsByComma('ni@njan.com,pova.da')).toEqual(false); }); + it('strips spaces between emails before validating', () => { + expect(validEmailsByComma('1@test.com , 2@test.com')).toEqual(true); + }); }); diff --git a/spec/builders/messages/message_builder_spec.rb b/spec/builders/messages/message_builder_spec.rb index 845c1ab99..be5d60834 100644 --- a/spec/builders/messages/message_builder_spec.rb +++ b/spec/builders/messages/message_builder_spec.rb @@ -98,6 +98,17 @@ describe ::Messages::MessageBuilder do params = ActionController::Parameters.new({ cc_emails: 'test.com', bcc_emails: 'test_bcc.com' }) expect { described_class.new(user, conversation, params).perform }.to raise_error 'Invalid email address' end + + it 'strips off whitespace before saving cc_emails and bcc_emails' do + cc_emails = ' test1@test.com , test2@test.com, test3@test.com' + bcc_emails = 'test1@test.com,test2@test.com, test3@test.com ' + params = ActionController::Parameters.new({ cc_emails: cc_emails, bcc_emails: bcc_emails }) + + message = described_class.new(user, conversation, params).perform + + expect(message.content_attributes[:cc_emails]).to eq ['test1@test.com', 'test2@test.com', 'test3@test.com'] + expect(message.content_attributes[:bcc_emails]).to eq ['test1@test.com', 'test2@test.com', 'test3@test.com'] + end end end end