From 97fc62e97425b48ef37ef3c9225e10b2dc085f7b Mon Sep 17 00:00:00 2001 From: Sonny Bakker Date: Sat, 31 Oct 2020 14:18:11 +0100 Subject: [PATCH] Take read status in consideration when sorting --- .../homepage/components/postlist/filters.js | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/newsreader/js/pages/homepage/components/postlist/filters.js b/src/newsreader/js/pages/homepage/components/postlist/filters.js index 02d6c28..3024aaf 100644 --- a/src/newsreader/js/pages/homepage/components/postlist/filters.js +++ b/src/newsreader/js/pages/homepage/components/postlist/filters.js @@ -4,6 +4,19 @@ const isEmpty = (object = {}) => { return Object.keys(object).length === 0; }; +const sortOrdering = (firstPost, secondPost) => { + const dateOrdering = + new Date(firstPost.publicationDate) < new Date(secondPost.publicationDate); + + if (firstPost.read && !secondPost.read) { + return 1; + } else if (secondPost.read && !firstPost.read) { + return -1; + } + + return dateOrdering; +}; + export const filterPostsByRule = (rule = {}, posts = []) => { const filteredPosts = posts.filter(post => { return post.rule === rule.id; @@ -11,9 +24,7 @@ export const filterPostsByRule = (rule = {}, posts = []) => { const filteredData = filteredPosts.map(post => ({ ...post, rule: { ...rule } })); - return filteredData.sort((firstPost, secondPost) => { - return new Date(secondPost.publicationDate) - new Date(firstPost.publicationDate); - }); + return filteredData.sort(sortOrdering); }; export const filterPostsByCategory = (category = {}, rules = [], posts = []) => { @@ -29,9 +40,7 @@ export const filterPostsByCategory = (category = {}, rules = [], posts = []) => return filteredPosts.map(post => ({ ...post, rule: { ...rule } })); }); - const sortedPosts = [...filteredData.flat()].sort((firstPost, secondPost) => { - return new Date(secondPost.publicationDate) - new Date(firstPost.publicationDate); - }); + const sortedPosts = [...filteredData.flat()].sort(sortOrdering); return sortedPosts; };