using a switch for complex decision logic - no if-branching!
// DYNAMIC/COMPLEX BOOLEAN LOGIC
function hasUnseenNews(newsTime, seenTime) {
const newsMoment = +new Date(newsTime);
const seenMoment = +new Date(seenTime);
return newsMoment > seenMoment;
}
// DECISION TREE
function showDot(isFollowed, newsTime, seenTime) {
switch (true) {
case !isFollowed:
case !newsTime:
return false;
case !seenTime:
case hasUnseenNews(newsTime, seenTime):
return true;
default:
return false;
}
}
// test: not followed >>>> false
console.log(showDot(false, '1980-01-01', '1979-01-01'));
// test: no news >>>> false
console.log(showDot(true, '', '1980-01-01'));
// test: not seen >>>> true
console.log(showDot(true, '1980-01-01', ''));
// test: newsTime > seenTime >>>> true
console.log(showDot(true, '1980-01-01', '1970-01-01'));
// test: newsTime === seenTime >>>> false
console.log(showDot(true, '1980-01-01', '1980-01-01'));
// test: newsTime < seenTimer >>>> false
console.log(showDot(true, '1980-01-01', '1990-01-01'));