From b3f1489decffc3ff6ce02dd1129da9c01026110b Mon Sep 17 00:00:00 2001 From: Hannu Lyytikainen Date: Thu, 14 Dec 2017 13:44:57 +0200 Subject: [PATCH] Check for transition type before rendering it Also moved a utility function that is used only once away from util/propTypes. --- .../ActivityFeed/ActivityFeed.example.js | 6 +++ src/components/ActivityFeed/ActivityFeed.js | 47 +++++++++++++++---- src/util/propTypes.js | 11 ----- 3 files changed, 44 insertions(+), 20 deletions(-) diff --git a/src/components/ActivityFeed/ActivityFeed.example.js b/src/components/ActivityFeed/ActivityFeed.example.js index 9af2b14a..79b0319f 100644 --- a/src/components/ActivityFeed/ActivityFeed.example.js +++ b/src/components/ActivityFeed/ActivityFeed.example.js @@ -78,6 +78,12 @@ export const WithTransitions = { by: propTypes.TX_TRANSITION_ACTOR_PROVIDER, transition: propTypes.TX_TRANSITION_ACCEPT, }), + // this should not be visible in the feed + createTxTransition({ + at: new Date(Date.UTC(2017, 10, 16, 8, 12)), + by: propTypes.TX_TRANSITION_ACTOR_PROVIDER, + transition: propTypes.TX_TRANSITION_AUTO_COMPLETE_WITHOUT_REVIEWS, + }), ], }), messages: [], diff --git a/src/components/ActivityFeed/ActivityFeed.js b/src/components/ActivityFeed/ActivityFeed.js index 53b0edce..72e5efa8 100644 --- a/src/components/ActivityFeed/ActivityFeed.js +++ b/src/components/ActivityFeed/ActivityFeed.js @@ -66,6 +66,34 @@ Review.propTypes = { rating: number.isRequired, }; +// Check if a transition is the kind that +// should be rendered in he ActivityFeed +const isTransitionRendered = transition => { + return [ + propTypes.TX_TRANSITION_PREAUTHORIZE, + propTypes.TX_TRANSITION_ACCEPT, + propTypes.TX_TRANSITION_DECLINE, + propTypes.TX_TRANSITION_AUTO_DECLINE, + propTypes.TX_TRANSITION_CANCEL, + propTypes.TX_TRANSITION_MARK_DELIVERED, + propTypes.TX_TRANSITION_REVIEW_BY_PROVIDER_FIRST, + propTypes.TX_TRANSITION_REVIEW_BY_PROVIDER_SECOND, + propTypes.TX_TRANSITION_REVIEW_BY_CUSTOMER_FIRST, + propTypes.TX_TRANSITION_REVIEW_BY_CUSTOMER_SECOND, + ].includes(transition); +}; + +// Check if a user giving a review is related to +// given tx transition. +const isReviewTransition = transition => { + return [ + propTypes.TX_TRANSITION_REVIEW_BY_PROVIDER_FIRST, + propTypes.TX_TRANSITION_REVIEW_BY_CUSTOMER_FIRST, + propTypes.TX_TRANSITION_REVIEW_BY_PROVIDER_SECOND, + propTypes.TX_TRANSITION_REVIEW_BY_CUSTOMER_SECOND, + ].includes(transition); +}; + const hasUserLeftAReviewFirst = (userRole, lastTransition) => { return ( (lastTransition === propTypes.TX_TRANSITION_REVIEW_BY_CUSTOMER_FIRST && @@ -204,10 +232,7 @@ const Transition = props => { let reviewComponent = null; - if ( - propTypes.isReviewTransition(currentTransition) && - propTypes.areReviewsCompleted(lastTransition) - ) { + if (isReviewTransition(currentTransition) && propTypes.areReviewsCompleted(lastTransition)) { const customerReview = currentTransition === propTypes.TX_TRANSITION_REVIEW_BY_CUSTOMER_FIRST || currentTransition === propTypes.TX_TRANSITION_REVIEW_BY_CUSTOMER_SECOND; @@ -357,11 +382,15 @@ export const ActivityFeedComponent = props => { }; const transitionListItem = transition => { - return ( -
  • - {transitionComponent(transition)} -
  • - ); + if (isTransitionRendered(transition.transition)) { + return ( +
  • + {transitionComponent(transition)} +
  • + ); + } else { + return null; + } }; return ( diff --git a/src/util/propTypes.js b/src/util/propTypes.js index 7359e3d8..c2bd0ee5 100644 --- a/src/util/propTypes.js +++ b/src/util/propTypes.js @@ -247,17 +247,6 @@ export const areReviewsCompleted = transition => { ].includes(transition); }; -// Check if a user giving a review is related to -// given tx transition. -export const isReviewTransition = transition => { - return [ - TX_TRANSITION_REVIEW_BY_PROVIDER_FIRST, - TX_TRANSITION_REVIEW_BY_CUSTOMER_FIRST, - TX_TRANSITION_REVIEW_BY_PROVIDER_SECOND, - TX_TRANSITION_REVIEW_BY_CUSTOMER_SECOND, - ].includes(transition); -}; - // Possible amount of stars in a review export const REVIEW_RATINGS = [1, 2, 3, 4, 5];