@draftbox-co/gatsby-ghost-novela-theme
Version:
A Gatsby theme plugin for creating blogs from headless Ghost CMS.
72 lines (63 loc) • 1.47 kB
JavaScript
/* eslint-disable */
/**
* In order to improve the authoring experience we'll set a fallback for hero images
* when they're not provided. This will allow you to write articles without immediately
* adding a hero image.
*
* @param {Object} heroSource
*/
function normalizeHero(article) {
let hero = {
full: {},
regular: {},
narrow: {},
seo: {},
};
if (
article.hero &&
article.hero.full &&
article.hero.narrow &&
article.hero.seo
) {
hero = {
full: article.hero.full.fluid,
regular: article.hero.regular.fluid,
narrow: article.hero.narrow.fluid,
seo: article.hero.seo.fixed,
};
} else {
console.log("\u001B[33m", `Missing hero for "${article.title}"`);
}
return hero;
}
function normalizeAvatar(author) {
let avatar = {
small: {},
medium: {},
large: {},
};
if (author.avatar) {
avatar = {
small: author.avatar.small.fluid,
medium: author.avatar.medium.fluid,
large: author.avatar.large.fluid,
};
} else {
console.log("\u001B[33m", `Missing avatar for "${author.name}"`);
}
return avatar;
}
module.exports.ghost = {
articles: ({ node: article }) => {
return {
...article,
hero: normalizeHero(article),
};
},
authors: ({ node: author }) => {
return {
...author,
avatar: normalizeAvatar(author),
};
},
};