mirror of
https://github.com/TryGhost/Ghost.git
synced 2025-02-10 23:36:14 -05:00
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.
37 lines
1.2 KiB
JavaScript
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;
|