From 0b0929aa7b84906d7fdc5fa2e752fb16f7edd4c3 Mon Sep 17 00:00:00 2001 From: witzig Date: Mon, 20 Mar 2017 21:40:21 +0100 Subject: [PATCH] Some code formatting --- lib/models/forms.js | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/lib/models/forms.js b/lib/models/forms.js index 07736f17..940f5483 100644 --- a/lib/models/forms.js +++ b/lib/models/forms.js @@ -357,44 +357,52 @@ function filterKeysAndValues(keysIn, valuesIn, method = 'include', prefixes = [] } function testForMjmlErrors(keys, values) { + + let errors = []; let testLayout = '{{{body}}}'; - let isInvalidMjml = (template, layout = testLayout) => { + + let hasMjmlError = (template, layout = testLayout) => { let source = layout.replace(/\{\{\{body\}\}\}/g, template); let compiled; + try { compiled = mjml.mjml2html(source); } catch (err) { return err; } + if (compiled.errors.length) { return compiled.errors[0].message || compiled.errors[0]; } + return null; }; - let errors = []; - keys.forEach((key, index) => { if (key.startsWith('mail_') || key.startsWith('web_')) { + let template = values[index]; - let err = isInvalidMjml(template); + let err = hasMjmlError(template); + err && errors.push(key + ': ' + (err.message || err)); - if (key === 'mail_confirm_html' && !template.includes('{{confirmUrl}}')) { - errors.push(key + ': Missing {{confirmUrl}}'); - } + key === 'mail_confirm_html' && !template.includes('{{confirmUrl}}') && errors.push(key + ': Missing {{confirmUrl}}'); + } else if (key === 'layout') { + let layout = values[index]; - let err = isInvalidMjml('', layout); + let err = hasMjmlError('', layout); + err && errors.push('layout: ' + (err.message || err)); !layout.includes('{{{body}}}') && errors.push('layout: {{{body}}} not found'); } }); + if (errors.length) { errors.forEach((err, index) => { errors[index] = (index + 1) + ') ' + err; }); - return 'Please Fix These Errors:\n\n' + errors.join('\n'); + return 'Please fix these MJML errors:\n\n' + errors.join('\n'); } return null;