Check for transition type before rendering it

Also moved a utility function that is used only once away from
util/propTypes.
This commit is contained in:
Hannu Lyytikainen 2017-12-14 13:44:57 +02:00
parent ead540a126
commit b3f1489dec
3 changed files with 44 additions and 20 deletions

View file

@ -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: [],

View file

@ -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 (
<li key={transition.transition} className={css.transitionItem}>
{transitionComponent(transition)}
</li>
);
if (isTransitionRendered(transition.transition)) {
return (
<li key={transition.transition} className={css.transitionItem}>
{transitionComponent(transition)}
</li>
);
} else {
return null;
}
};
return (

View file

@ -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];