0
Fork 0
mirror of https://github.com/TryGhost/Ghost.git synced 2025-02-10 23:36:14 -05:00
ghost/core/server/services/mega/email-preview.js
Simon Backx 837e11b4d8
Fixed email preview using wrong newsletter (#14756)
refs https://github.com/TryGhost/Team/issues/1603

When previewing a scheduled/published post via Post editor menu > E-mail newsletter > Preview in browser. The e-mail template from the default newsletter was used instead of the newsletter that was selected when scheduling the post.
2022-05-11 17:52:24 +02:00

37 lines
1.2 KiB
JavaScript

const postEmailSerializer = require('./post-email-serializer');
const models = require('../../models');
class EmailPreview {
/**
* @param {Object} post - Post model object instance
* @param {String} memberSegment - member segment filter
* @returns {Promise<Object>}
*/
async generateEmailContent(post, memberSegment) {
let newsletter = await post.related('newsletter').fetch();
if (!newsletter) {
newsletter = await models.Newsletter.getDefaultNewsletter();
}
let emailContent = await postEmailSerializer.serialize(post, newsletter, {
isBrowserPreview: true
});
if (memberSegment) {
emailContent = postEmailSerializer.renderEmailForSegment(emailContent, memberSegment);
}
const replacements = postEmailSerializer.parseReplacements(emailContent);
replacements.forEach((replacement) => {
emailContent[replacement.format] = emailContent[replacement.format].replace(
replacement.match,
replacement.fallback || ''
);
});
return emailContent;
}
}
module.exports = EmailPreview;