From 2c8c8b3d0e7725888feadd8bf84010e8166b4471 Mon Sep 17 00:00:00 2001 From: Amine Ben hammou Date: Wed, 31 Jan 2018 15:55:21 +0000 Subject: [PATCH] filtering unknown templates categories --- assets/js/src/newsletters/templates.jsx | 31 ++++++++++++++++--------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/assets/js/src/newsletters/templates.jsx b/assets/js/src/newsletters/templates.jsx index 7166b6dd25..31395ba462 100644 --- a/assets/js/src/newsletters/templates.jsx +++ b/assets/js/src/newsletters/templates.jsx @@ -128,7 +128,7 @@ const NewsletterTemplates = React.createClass({ getInitialState: function () { return { loading: false, - templates: {}, + templates: {}, // {category1: [template11, template12, ..], category2: [template21, ...]} selectedCategory: '', }; }, @@ -159,18 +159,27 @@ const NewsletterTemplates = React.createClass({ ]; } - let templates = templatesCategories.reduce((result, { name }) => { - const obj = result; - obj[name] = []; - return obj; - }, {}); + const templates = {}; + const categoriesNames = templatesCategories.map(category => category.name); + categoriesNames.forEach((name) => { + templates[name] = []; + }); - templates = response.data.reduce((result, item) => { - JSON.parse(item.categories).forEach((category) => { - result[category].push(item); + response.data.forEach((template) => { + let categories; + try { + categories = JSON.parse(template.categories) + .filter(name => categoriesNames.indexOf(name) !== -1); + } catch (err) { + categories = []; + } + if (categories.length === 0) { // the template has no known category + categories = ['saved']; // we add it to "Your saved templates" + } + categories.forEach((category) => { + templates[category].push(template); }); - return result; - }, templates); + }); this.selectInitialCategory(templates); }