diff --git a/src/components/ActivityFeed/ActivityFeed.example.js b/src/components/ActivityFeed/ActivityFeed.example.js index 93856ac1..81679255 100644 --- a/src/components/ActivityFeed/ActivityFeed.example.js +++ b/src/components/ActivityFeed/ActivityFeed.example.js @@ -9,17 +9,17 @@ import { createReview, } from '../../util/test-data'; import { - TX_TRANSITION_ACCEPT, + TRANSITION_ACCEPT, + TRANSITION_COMPLETE, + TRANSITION_DECLINE, + TRANSITION_EXPIRE_REVIEW_PERIOD, + TRANSITION_REQUEST, + TRANSITION_REVIEW_1_BY_CUSTOMER, + TRANSITION_REVIEW_1_BY_PROVIDER, + TRANSITION_REVIEW_2_BY_CUSTOMER, + TRANSITION_REVIEW_2_BY_PROVIDER, TX_TRANSITION_ACTOR_CUSTOMER, TX_TRANSITION_ACTOR_PROVIDER, - TX_TRANSITION_AUTO_COMPLETE_WITHOUT_REVIEWS, - TX_TRANSITION_DECLINE, - TX_TRANSITION_MARK_DELIVERED, - TX_TRANSITION_PREAUTHORIZE, - TX_TRANSITION_REVIEW_BY_CUSTOMER_FIRST, - TX_TRANSITION_REVIEW_BY_CUSTOMER_SECOND, - TX_TRANSITION_REVIEW_BY_PROVIDER_FIRST, - TX_TRANSITION_REVIEW_BY_PROVIDER_SECOND, } from '../../util/types'; import ActivityFeed from './ActivityFeed'; @@ -83,18 +83,18 @@ export const WithTransitions = { createTxTransition({ at: new Date(Date.UTC(2017, 10, 9, 8, 10)), by: TX_TRANSITION_ACTOR_CUSTOMER, - transition: TX_TRANSITION_PREAUTHORIZE, + transition: TRANSITION_REQUEST, }), createTxTransition({ at: new Date(Date.UTC(2017, 10, 9, 8, 12)), by: TX_TRANSITION_ACTOR_PROVIDER, - transition: TX_TRANSITION_ACCEPT, + transition: TRANSITION_ACCEPT, }), // this should not be visible in the feed createTxTransition({ at: new Date(Date.UTC(2017, 10, 16, 8, 12)), by: TX_TRANSITION_ACTOR_PROVIDER, - transition: TX_TRANSITION_AUTO_COMPLETE_WITHOUT_REVIEWS, + transition: TRANSITION_EXPIRE_REVIEW_PERIOD, }), ], }), @@ -115,37 +115,37 @@ export const WithMessagesTransitionsAndReviews = { customer: createUser('user1'), provider: createUser('user2'), listing: createListing('Listing'), - lastTransition: TX_TRANSITION_REVIEW_BY_CUSTOMER_SECOND, + lastTransition: TRANSITION_REVIEW_2_BY_CUSTOMER, transitions: [ createTxTransition({ at: new Date(Date.UTC(2017, 10, 9, 8, 10)), by: TX_TRANSITION_ACTOR_CUSTOMER, - transition: TX_TRANSITION_PREAUTHORIZE, + transition: TRANSITION_REQUEST, }), createTxTransition({ at: new Date(Date.UTC(2017, 10, 9, 8, 12)), by: TX_TRANSITION_ACTOR_PROVIDER, - transition: TX_TRANSITION_ACCEPT, + transition: TRANSITION_ACCEPT, }), createTxTransition({ at: new Date(Date.UTC(2017, 10, 9, 10, 33)), by: TX_TRANSITION_ACTOR_PROVIDER, - transition: TX_TRANSITION_DECLINE, + transition: TRANSITION_DECLINE, }), createTxTransition({ at: new Date(Date.UTC(2017, 10, 9, 10, 34)), by: TX_TRANSITION_ACTOR_PROVIDER, - transition: TX_TRANSITION_MARK_DELIVERED, + transition: TRANSITION_COMPLETE, }), createTxTransition({ at: new Date(Date.UTC(2017, 10, 9, 11, 34)), by: TX_TRANSITION_ACTOR_PROVIDER, - transition: TX_TRANSITION_REVIEW_BY_PROVIDER_FIRST, + transition: TRANSITION_REVIEW_1_BY_PROVIDER, }), createTxTransition({ at: new Date(Date.UTC(2017, 10, 9, 12, 34)), by: TX_TRANSITION_ACTOR_CUSTOMER, - transition: TX_TRANSITION_REVIEW_BY_CUSTOMER_SECOND, + transition: TRANSITION_REVIEW_2_BY_CUSTOMER, }), ], reviews: [ @@ -211,17 +211,17 @@ export const WithAReviewFromBothUsers = { { author: createUser('user2'), subject: createUser('user1') } ), ], - lastTransition: TX_TRANSITION_REVIEW_BY_PROVIDER_SECOND, + lastTransition: TRANSITION_REVIEW_2_BY_PROVIDER, transitions: [ createTxTransition({ at: new Date(Date.UTC(2017, 10, 9, 8, 10)), by: TX_TRANSITION_ACTOR_CUSTOMER, - transition: TX_TRANSITION_REVIEW_BY_CUSTOMER_FIRST, + transition: TRANSITION_REVIEW_1_BY_CUSTOMER, }), createTxTransition({ at: new Date(Date.UTC(2017, 10, 10, 8, 10)), by: TX_TRANSITION_ACTOR_PROVIDER, - transition: TX_TRANSITION_REVIEW_BY_PROVIDER_SECOND, + transition: TRANSITION_REVIEW_2_BY_PROVIDER, }), ], }), @@ -257,12 +257,12 @@ class PagedFeed extends Component { const trans1 = createTxTransition({ at: dates[0], by: TX_TRANSITION_ACTOR_CUSTOMER, - transition: TX_TRANSITION_PREAUTHORIZE, + transition: TRANSITION_REQUEST, }); const trans2 = createTxTransition({ at: dates[2], by: TX_TRANSITION_ACTOR_PROVIDER, - transition: TX_TRANSITION_ACCEPT, + transition: TRANSITION_ACCEPT, }); // Last transition timestamp is interleaved between the last two @@ -270,7 +270,7 @@ class PagedFeed extends Component { const trans3 = createTxTransition({ at: dates[5], by: TX_TRANSITION_ACTOR_CUSTOMER, - transition: TX_TRANSITION_MARK_DELIVERED, + transition: TRANSITION_COMPLETE, }); // First message timestamp is interleaved between the first two @@ -283,7 +283,7 @@ class PagedFeed extends Component { const transaction = createTransaction({ id: 'tx1', - lastTransition: TX_TRANSITION_MARK_DELIVERED, + lastTransition: TRANSITION_COMPLETE, lastTransitionedAt: dates[5], transitions: [trans1, trans2, trans3], listing: createListing('listing'), diff --git a/src/components/ActivityFeed/ActivityFeed.js b/src/components/ActivityFeed/ActivityFeed.js index 4603ad88..7514b6ad 100644 --- a/src/components/ActivityFeed/ActivityFeed.js +++ b/src/components/ActivityFeed/ActivityFeed.js @@ -7,19 +7,19 @@ import { Avatar, InlineTextButton, ReviewRating } from '../../components'; import { formatDate } from '../../util/dates'; import { ensureTransaction, ensureUser, ensureListing, userDisplayName } from '../../util/data'; import { - TX_TRANSITION_ACCEPT, + TRANSITION_ACCEPT, + TRANSITION_CANCEL, + TRANSITION_COMPLETE, + TRANSITION_DECLINE, + TRANSITION_EXPIRE, + TRANSITION_REQUEST, + TRANSITION_REQUEST_AFTER_ENQUIRY, + TRANSITION_REVIEW_1_BY_CUSTOMER, + TRANSITION_REVIEW_1_BY_PROVIDER, + TRANSITION_REVIEW_2_BY_CUSTOMER, + TRANSITION_REVIEW_2_BY_PROVIDER, TX_TRANSITION_ACTOR_CUSTOMER, TX_TRANSITION_ACTOR_PROVIDER, - TX_TRANSITION_AUTO_DECLINE, - TX_TRANSITION_CANCEL, - TX_TRANSITION_DECLINE, - TX_TRANSITION_MARK_DELIVERED, - TX_TRANSITION_PREAUTHORIZE, - TX_TRANSITION_PREAUTHORIZE_ENQUIRY, - TX_TRANSITION_REVIEW_BY_CUSTOMER_FIRST, - TX_TRANSITION_REVIEW_BY_CUSTOMER_SECOND, - TX_TRANSITION_REVIEW_BY_PROVIDER_FIRST, - TX_TRANSITION_REVIEW_BY_PROVIDER_SECOND, areReviewsCompleted, propTypes, } from '../../util/types'; @@ -87,17 +87,17 @@ Review.propTypes = { // should be rendered in he ActivityFeed const shouldRenderTransition = transition => { return [ - TX_TRANSITION_PREAUTHORIZE, - TX_TRANSITION_PREAUTHORIZE_ENQUIRY, - TX_TRANSITION_ACCEPT, - TX_TRANSITION_DECLINE, - TX_TRANSITION_AUTO_DECLINE, - TX_TRANSITION_CANCEL, - TX_TRANSITION_MARK_DELIVERED, - TX_TRANSITION_REVIEW_BY_PROVIDER_FIRST, - TX_TRANSITION_REVIEW_BY_PROVIDER_SECOND, - TX_TRANSITION_REVIEW_BY_CUSTOMER_FIRST, - TX_TRANSITION_REVIEW_BY_CUSTOMER_SECOND, + TRANSITION_ACCEPT, + TRANSITION_CANCEL, + TRANSITION_COMPLETE, + TRANSITION_DECLINE, + TRANSITION_EXPIRE, + TRANSITION_REQUEST, + TRANSITION_REQUEST_AFTER_ENQUIRY, + TRANSITION_REVIEW_1_BY_CUSTOMER, + TRANSITION_REVIEW_1_BY_PROVIDER, + TRANSITION_REVIEW_2_BY_CUSTOMER, + TRANSITION_REVIEW_2_BY_PROVIDER, ].includes(transition); }; @@ -105,18 +105,18 @@ const shouldRenderTransition = transition => { // given tx transition. 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, + TRANSITION_REVIEW_1_BY_CUSTOMER, + TRANSITION_REVIEW_1_BY_PROVIDER, + TRANSITION_REVIEW_2_BY_CUSTOMER, + TRANSITION_REVIEW_2_BY_PROVIDER, ].includes(transition); }; const hasUserLeftAReviewFirst = (userRole, lastTransition) => { return ( - (lastTransition === TX_TRANSITION_REVIEW_BY_CUSTOMER_FIRST && + (lastTransition === TRANSITION_REVIEW_1_BY_CUSTOMER && userRole === TX_TRANSITION_ACTOR_CUSTOMER) || - (lastTransition === TX_TRANSITION_REVIEW_BY_PROVIDER_FIRST && + (lastTransition === TRANSITION_REVIEW_1_BY_PROVIDER && userRole === TX_TRANSITION_ACTOR_PROVIDER) || areReviewsCompleted(lastTransition) ); @@ -134,11 +134,11 @@ const resolveTransitionMessage = ( const isOwnTransition = transition.by === ownRole; const currentTransition = transition.transition; const displayName = otherUsersName; - const deliveredState = lastTransition === TX_TRANSITION_MARK_DELIVERED; + const deliveredState = lastTransition === TRANSITION_COMPLETE; switch (currentTransition) { - case TX_TRANSITION_PREAUTHORIZE: - case TX_TRANSITION_PREAUTHORIZE_ENQUIRY: + case TRANSITION_REQUEST: + case TRANSITION_REQUEST_AFTER_ENQUIRY: return isOwnTransition ? ( ) : ( @@ -147,27 +147,27 @@ const resolveTransitionMessage = ( values={{ displayName, listingTitle }} /> ); - case TX_TRANSITION_ACCEPT: + case TRANSITION_ACCEPT: return isOwnTransition ? ( ) : ( ); - case TX_TRANSITION_DECLINE: + case TRANSITION_DECLINE: return isOwnTransition ? ( ) : ( ); - case TX_TRANSITION_AUTO_DECLINE: + case TRANSITION_EXPIRE: return ownRole === TX_TRANSITION_ACTOR_PROVIDER ? ( ) : ( ); - case TX_TRANSITION_CANCEL: + case TRANSITION_CANCEL: return ; - case TX_TRANSITION_MARK_DELIVERED: + case TRANSITION_COMPLETE: // Show the leave a review link if the state is delivered or // if current user is not the first to leave a review const reviewLink = @@ -178,8 +178,8 @@ const resolveTransitionMessage = ( ) : null; return ; - case TX_TRANSITION_REVIEW_BY_PROVIDER_FIRST: - case TX_TRANSITION_REVIEW_BY_CUSTOMER_FIRST: + case TRANSITION_REVIEW_1_BY_PROVIDER: + case TRANSITION_REVIEW_1_BY_CUSTOMER: if (isOwnTransition) { return ; } else { @@ -197,8 +197,8 @@ const resolveTransitionMessage = ( /> ); } - case TX_TRANSITION_REVIEW_BY_PROVIDER_SECOND: - case TX_TRANSITION_REVIEW_BY_CUSTOMER_SECOND: + case TRANSITION_REVIEW_2_BY_PROVIDER: + case TRANSITION_REVIEW_2_BY_CUSTOMER: if (isOwnTransition) { return ; } else { @@ -265,11 +265,11 @@ const Transition = props => { if (isReviewTransition(currentTransition) && areReviewsCompleted(lastTransition)) { const customerReview = - currentTransition === TX_TRANSITION_REVIEW_BY_CUSTOMER_FIRST || - currentTransition === TX_TRANSITION_REVIEW_BY_CUSTOMER_SECOND; + currentTransition === TRANSITION_REVIEW_1_BY_CUSTOMER || + currentTransition === TRANSITION_REVIEW_2_BY_CUSTOMER; const providerReview = - currentTransition === TX_TRANSITION_REVIEW_BY_PROVIDER_FIRST || - currentTransition === TX_TRANSITION_REVIEW_BY_PROVIDER_SECOND; + currentTransition === TRANSITION_REVIEW_1_BY_PROVIDER || + currentTransition === TRANSITION_REVIEW_2_BY_PROVIDER; if (customerReview) { const review = reviewByAuthorId(currentTransaction, customer.id); reviewComponent = ( @@ -300,7 +300,7 @@ const Transition = props => { }; Transition.propTypes = { - transition: propTypes.txTransition.isRequired, + transition: propTypes.transition.isRequired, transaction: propTypes.transaction.isRequired, currentUser: propTypes.currentUser.isRequired, intl: intlShape.isRequired, diff --git a/src/components/BookingBreakdown/BookingBreakdown.example.js b/src/components/BookingBreakdown/BookingBreakdown.example.js index ca1074ce..33405317 100644 --- a/src/components/BookingBreakdown/BookingBreakdown.example.js +++ b/src/components/BookingBreakdown/BookingBreakdown.example.js @@ -3,13 +3,13 @@ import { types as sdkTypes } from '../../util/sdkLoader'; import { LINE_ITEM_DAY, LINE_ITEM_NIGHT, - TX_TRANSITION_ACCEPT, + TRANSITION_ACCEPT, + TRANSITION_CANCEL, + TRANSITION_COMPLETE, + TRANSITION_DECLINE, + TRANSITION_EXPIRE, + TRANSITION_REQUEST, TX_TRANSITION_ACTOR_CUSTOMER, - TX_TRANSITION_AUTO_DECLINE, - TX_TRANSITION_CANCEL, - TX_TRANSITION_DECLINE, - TX_TRANSITION_MARK_DELIVERED, - TX_TRANSITION_PREAUTHORIZE, } from '../../util/types'; import config from '../../config'; import BookingBreakdown from './BookingBreakdown'; @@ -34,12 +34,12 @@ const exampleTransaction = params => { attributes: { createdAt: created, lastTransitionedAt: created, - lastTransition: TX_TRANSITION_PREAUTHORIZE, + lastTransition: TRANSITION_REQUEST, transitions: [ { at: created, by: TX_TRANSITION_ACTOR_CUSTOMER, - transition: TX_TRANSITION_PREAUTHORIZE, + transition: TRANSITION_REQUEST, }, ], @@ -206,7 +206,7 @@ export const ProviderSalePreauthorized = { userRole: 'provider', unitType: LINE_ITEM_NIGHT, transaction: exampleTransaction({ - lastTransition: TX_TRANSITION_PREAUTHORIZE, + lastTransition: TRANSITION_REQUEST, payinTotal: new Money(4500, CURRENCY), payoutTotal: new Money(2500, CURRENCY), lineItems: [ @@ -240,7 +240,7 @@ export const ProviderSaleAccepted = { userRole: 'provider', unitType: LINE_ITEM_NIGHT, transaction: exampleTransaction({ - lastTransition: TX_TRANSITION_ACCEPT, + lastTransition: TRANSITION_ACCEPT, payinTotal: new Money(4500, CURRENCY), payoutTotal: new Money(2500, CURRENCY), lineItems: [ @@ -274,7 +274,7 @@ export const ProviderSaleDeclined = { userRole: 'provider', unitType: LINE_ITEM_NIGHT, transaction: exampleTransaction({ - lastTransition: TX_TRANSITION_DECLINE, + lastTransition: TRANSITION_DECLINE, payinTotal: new Money(4500, CURRENCY), payoutTotal: new Money(2500, CURRENCY), lineItems: [ @@ -308,7 +308,7 @@ export const ProviderSaleAutoDeclined = { userRole: 'provider', unitType: LINE_ITEM_NIGHT, transaction: exampleTransaction({ - lastTransition: TX_TRANSITION_AUTO_DECLINE, + lastTransition: TRANSITION_EXPIRE, payinTotal: new Money(4500, CURRENCY), payoutTotal: new Money(2500, CURRENCY), lineItems: [ @@ -342,7 +342,7 @@ export const ProviderSaleDelivered = { userRole: 'provider', unitType: LINE_ITEM_NIGHT, transaction: exampleTransaction({ - lastTransition: TX_TRANSITION_MARK_DELIVERED, + lastTransition: TRANSITION_COMPLETE, payinTotal: new Money(4500, CURRENCY), payoutTotal: new Money(2500, CURRENCY), lineItems: [ @@ -376,7 +376,7 @@ export const ProviderSaleCanceled = { userRole: 'provider', unitType: LINE_ITEM_NIGHT, transaction: exampleTransaction({ - lastTransition: TX_TRANSITION_CANCEL, + lastTransition: TRANSITION_CANCEL, payinTotal: new Money(0, CURRENCY), payoutTotal: new Money(0, CURRENCY), lineItems: [ diff --git a/src/components/BookingBreakdown/BookingBreakdown.js b/src/components/BookingBreakdown/BookingBreakdown.js index 1ffd412d..776c0b43 100644 --- a/src/components/BookingBreakdown/BookingBreakdown.js +++ b/src/components/BookingBreakdown/BookingBreakdown.js @@ -13,8 +13,8 @@ import { LINE_ITEM_NIGHT, LINE_ITEM_PROVIDER_COMMISSION, txIsCanceled, - txIsDeclinedOrAutodeclined, - txIsDelivered, + txIsCompleted, + txIsDeclinedOrExpired, propTypes, } from '../../util/types'; import { daysBetween } from '../../util/dates'; @@ -216,9 +216,9 @@ export const BookingBreakdownComponent = props => { const classes = classNames(rootClassName || css.root, className); let providerTotalMessageId = 'BookingBreakdown.providerTotalDefault'; - if (txIsDelivered(transaction)) { + if (txIsCompleted(transaction)) { providerTotalMessageId = 'BookingBreakdown.providerTotalDelivered'; - } else if (txIsDeclinedOrAutodeclined(transaction)) { + } else if (txIsDeclinedOrExpired(transaction)) { providerTotalMessageId = 'BookingBreakdown.providerTotalDeclined'; } else if (txIsCanceled(transaction)) { providerTotalMessageId = 'BookingBreakdown.providerTotalCanceled'; diff --git a/src/components/BookingBreakdown/BookingBreakdown.test.js b/src/components/BookingBreakdown/BookingBreakdown.test.js index c2f7b214..bcef62dd 100644 --- a/src/components/BookingBreakdown/BookingBreakdown.test.js +++ b/src/components/BookingBreakdown/BookingBreakdown.test.js @@ -5,9 +5,9 @@ import { renderDeep } from '../../util/test-helpers'; import { types as sdkTypes } from '../../util/sdkLoader'; import { LINE_ITEM_NIGHT, + TRANSITION_CANCEL, + TRANSITION_REQUEST, TX_TRANSITION_ACTOR_CUSTOMER, - TX_TRANSITION_CANCEL, - TX_TRANSITION_PREAUTHORIZE, } from '../../util/types'; import { BookingBreakdownComponent } from './BookingBreakdown'; @@ -21,12 +21,12 @@ const exampleTransaction = params => { attributes: { createdAt: created, lastTransitionedAt: created, - lastTransition: TX_TRANSITION_PREAUTHORIZE, + lastTransition: TRANSITION_REQUEST, transitions: [ { at: created, by: TX_TRANSITION_ACTOR_CUSTOMER, - transition: TX_TRANSITION_PREAUTHORIZE, + transition: TRANSITION_REQUEST, }, ], @@ -136,7 +136,7 @@ describe('BookingBreakdown', () => { userRole="provider" unitType={LINE_ITEM_NIGHT} transaction={exampleTransaction({ - lastTransition: TX_TRANSITION_CANCEL, + lastTransition: TRANSITION_CANCEL, payinTotal: new Money(0, 'USD'), payoutTotal: new Money(0, 'USD'), lineItems: [ diff --git a/src/components/TransactionPanel/TransactionPanel.helpers.js b/src/components/TransactionPanel/TransactionPanel.helpers.js index 12320f52..9022d32b 100644 --- a/src/components/TransactionPanel/TransactionPanel.helpers.js +++ b/src/components/TransactionPanel/TransactionPanel.helpers.js @@ -4,12 +4,12 @@ import classNames from 'classnames'; import { txHasFirstReview, txIsAccepted, - txIsAutodeclined, txIsCanceled, + txIsCompleted, txIsDeclined, - txIsDelivered, txIsEnquired, - txIsPreauthorized, + txIsExpired, + txIsRequested, txIsReviewed, } from '../../util/types'; import { userDisplayName } from '../../util/data'; @@ -212,7 +212,7 @@ export const OrderTitle = props => { ); - } else if (txIsPreauthorized(transaction)) { + } else if (txIsRequested(transaction)) { return (

@@ -245,7 +245,7 @@ export const OrderTitle = props => { />

); - } else if (txIsAutodeclined(transaction)) { + } else if (txIsExpired(transaction)) { return (

{

); } else if ( - txIsDelivered(transaction) || + txIsCompleted(transaction) || txHasFirstReview(transaction) || txIsReviewed(transaction) ) { @@ -292,7 +292,7 @@ export const OrderMessage = props => { } = props; const classes = classNames(rootClassName || css.transactionInfoMessage, className); - if (!listingDeleted && txIsPreauthorized(transaction)) { + if (!listingDeleted && txIsRequested(transaction)) { return (

@@ -331,7 +331,7 @@ export const SaleTitle = props => { /> ); - } else if (txIsPreauthorized(transaction)) { + } else if (txIsRequested(transaction)) { return (

{ />

); - } else if (txIsAutodeclined(transaction)) { + } else if (txIsExpired(transaction)) { return (

{

); } else if ( - txIsDelivered(transaction) || + txIsCompleted(transaction) || txHasFirstReview(transaction) || txIsReviewed(transaction) ) { @@ -405,7 +405,7 @@ export const SaleMessage = props => { } = props; const classes = classNames(rootClassName || css.transactionInfoMessage, className); - if (!isCustomerBanned && txIsPreauthorized(transaction)) { + if (!isCustomerBanned && txIsRequested(transaction)) { return (

diff --git a/src/components/TransactionPanel/TransactionPanel.js b/src/components/TransactionPanel/TransactionPanel.js index 20a642b7..030d1271 100644 --- a/src/components/TransactionPanel/TransactionPanel.js +++ b/src/components/TransactionPanel/TransactionPanel.js @@ -2,7 +2,7 @@ import React, { Component } from 'react'; import PropTypes from 'prop-types'; import { injectIntl, intlShape, FormattedMessage } from 'react-intl'; import classNames from 'classnames'; -import { txIsEnquired, txIsPreauthorized, propTypes } from '../../util/types'; +import { txIsEnquired, txIsRequested, propTypes } from '../../util/types'; import { ensureListing, ensureTransaction, ensureUser } from '../../util/data'; import { isMobileSafari } from '../../util/userAgent'; import { AvatarMedium, AvatarLarge, ResponsiveImage, ReviewModal } from '../../components'; @@ -139,8 +139,7 @@ export class TransactionPanelComponent extends Component { const listingDeleted = listingLoaded && currentListing.attributes.deleted; const customerLoaded = !!currentCustomer.id; const isCustomerBanned = customerLoaded && currentCustomer.attributes.banned; - const canShowSaleButtons = - isProvider && txIsPreauthorized(currentTransaction) && !isCustomerBanned; + const canShowSaleButtons = isProvider && txIsRequested(currentTransaction) && !isCustomerBanned; const isProviderLoaded = !!currentProvider.id; const isProviderBanned = isProviderLoaded && currentProvider.attributes.banned; const canShowBookButton = isCustomer && txIsEnquired(currentTransaction) && !isProviderBanned; @@ -208,7 +207,7 @@ export class TransactionPanelComponent extends Component { this.isMobSaf && this.state.sendMessageFormFocused, }); - const showInfoMessage = listingDeleted || (!listingDeleted && txIsPreauthorized(transaction)); // !!orderInfoMessage; + const showInfoMessage = listingDeleted || (!listingDeleted && txIsRequested(transaction)); // !!orderInfoMessage; const feedContainerClasses = classNames(css.feedContainer, { [css.feedContainerWithInfoAbove]: showInfoMessage, diff --git a/src/components/TransactionPanel/TransactionPanel.test.js b/src/components/TransactionPanel/TransactionPanel.test.js index 685c91ee..da6c67d8 100644 --- a/src/components/TransactionPanel/TransactionPanel.test.js +++ b/src/components/TransactionPanel/TransactionPanel.test.js @@ -12,13 +12,13 @@ import { import { renderShallow } from '../../util/test-helpers'; import { fakeIntl } from '../../util/test-data'; import { - TX_TRANSITION_ACCEPT, - TX_TRANSITION_AUTO_DECLINE, - TX_TRANSITION_CANCELED, - TX_TRANSITION_DECLINE, - TX_TRANSITION_ENQUIRE, - TX_TRANSITION_MARK_DELIVERED, - TX_TRANSITION_PREAUTHORIZE, + TRANSITION_ACCEPT, + TRANSITION_CANCELED, + TRANSITION_COMPLETE, + TRANSITION_DECLINE, + TRANSITION_ENQUIRE, + TRANSITION_EXPIRE, + TRANSITION_REQUEST, } from '../../util/types'; import { BreakdownMaybe } from './TransactionPanel.helpers'; import { TransactionPanelComponent } from './TransactionPanel'; @@ -42,43 +42,43 @@ describe('TransactionPanel - Sale', () => { const txEnquired = createTransaction({ id: 'sale-enquired', - lastTransition: TX_TRANSITION_ENQUIRE, + lastTransition: TRANSITION_ENQUIRE, ...baseTxAttrs, }); const txPreauthorized = createTransaction({ id: 'sale-preauthorized', - lastTransition: TX_TRANSITION_PREAUTHORIZE, + lastTransition: TRANSITION_REQUEST, ...baseTxAttrs, }); const txAccepted = createTransaction({ id: 'sale-accepted', - lastTransition: TX_TRANSITION_ACCEPT, + lastTransition: TRANSITION_ACCEPT, ...baseTxAttrs, }); const txDeclined = createTransaction({ id: 'sale-declined', - lastTransition: TX_TRANSITION_DECLINE, + lastTransition: TRANSITION_DECLINE, ...baseTxAttrs, }); const txAutoDeclined = createTransaction({ id: 'sale-autodeclined', - lastTransition: TX_TRANSITION_AUTO_DECLINE, + lastTransition: TRANSITION_EXPIRE, ...baseTxAttrs, }); const txCanceled = createTransaction({ id: 'sale-canceled', - lastTransition: TX_TRANSITION_CANCELED, + lastTransition: TRANSITION_CANCELED, ...baseTxAttrs, }); const txDelivered = createTransaction({ id: 'sale-delivered', - lastTransition: TX_TRANSITION_MARK_DELIVERED, + lastTransition: TRANSITION_COMPLETE, ...baseTxAttrs, }); @@ -167,7 +167,7 @@ describe('TransactionPanel - Sale', () => { it('renders correct total price', () => { const transaction = createTransaction({ id: 'sale-tx', - lastTransition: TX_TRANSITION_PREAUTHORIZE, + lastTransition: TRANSITION_REQUEST, total: new Money(16500, 'USD'), commission: new Money(1000, 'USD'), booking: createBooking('booking1', { @@ -207,43 +207,43 @@ describe('TransactionPanel - Order', () => { const txEnquired = createTransaction({ id: 'order-enquired', - lastTransition: TX_TRANSITION_ENQUIRE, + lastTransition: TRANSITION_ENQUIRE, ...baseTxAttrs, }); const txPreauthorized = createTransaction({ id: 'order-preauthorized', - lastTransition: TX_TRANSITION_PREAUTHORIZE, + lastTransition: TRANSITION_REQUEST, ...baseTxAttrs, }); const txAccepted = createTransaction({ id: 'order-accepted', - lastTransition: TX_TRANSITION_ACCEPT, + lastTransition: TRANSITION_ACCEPT, ...baseTxAttrs, }); const txDeclined = createTransaction({ id: 'order-declined', - lastTransition: TX_TRANSITION_DECLINE, + lastTransition: TRANSITION_DECLINE, ...baseTxAttrs, }); const txAutoDeclined = createTransaction({ id: 'order-autodeclined', - lastTransition: TX_TRANSITION_AUTO_DECLINE, + lastTransition: TRANSITION_EXPIRE, ...baseTxAttrs, }); const txCanceled = createTransaction({ id: 'order-canceled', - lastTransition: TX_TRANSITION_CANCELED, + lastTransition: TRANSITION_CANCELED, ...baseTxAttrs, }); const txDelivered = createTransaction({ id: 'order-delivered', - lastTransition: TX_TRANSITION_MARK_DELIVERED, + lastTransition: TRANSITION_COMPLETE, ...baseTxAttrs, }); @@ -334,7 +334,7 @@ describe('TransactionPanel - Order', () => { it('renders correct total price', () => { const tx = createTransaction({ id: 'order-tx', - lastTransition: TX_TRANSITION_PREAUTHORIZE, + lastTransition: TRANSITION_REQUEST, total: new Money(16500, 'USD'), booking: createBooking('booking1', { start: new Date(Date.UTC(2017, 5, 10)), diff --git a/src/containers/BookingDatesForm/BookingDatesForm.js b/src/containers/BookingDatesForm/BookingDatesForm.js index fb4e46a0..451180c5 100644 --- a/src/containers/BookingDatesForm/BookingDatesForm.js +++ b/src/containers/BookingDatesForm/BookingDatesForm.js @@ -14,8 +14,8 @@ import { unitDivisor, convertMoneyToNumber, convertUnitToSubUnit } from '../../u import { LINE_ITEM_DAY, LINE_ITEM_NIGHT, + TRANSITION_REQUEST, TX_TRANSITION_ACTOR_CUSTOMER, - TX_TRANSITION_PREAUTHORIZE, propTypes, } from '../../util/types'; import config from '../../config'; @@ -51,7 +51,7 @@ const estimatedTransaction = (unitType, bookingStart, bookingEnd, unitPrice) => attributes: { createdAt: now, lastTransitionedAt: now, - lastTransition: TX_TRANSITION_PREAUTHORIZE, + lastTransition: TRANSITION_REQUEST, payinTotal: totalPrice, payoutTotal: totalPrice, lineItems: [ @@ -68,7 +68,7 @@ const estimatedTransaction = (unitType, bookingStart, bookingEnd, unitPrice) => { at: now, by: TX_TRANSITION_ACTOR_CUSTOMER, - transition: TX_TRANSITION_PREAUTHORIZE, + transition: TRANSITION_REQUEST, }, ], }, diff --git a/src/containers/BookingDatesForm/BookingDatesForm.test.js b/src/containers/BookingDatesForm/BookingDatesForm.test.js index f9ea0533..2e04148f 100644 --- a/src/containers/BookingDatesForm/BookingDatesForm.test.js +++ b/src/containers/BookingDatesForm/BookingDatesForm.test.js @@ -4,7 +4,7 @@ import Decimal from 'decimal.js'; import { types as sdkTypes } from '../../util/sdkLoader'; import { renderShallow } from '../../util/test-helpers'; import { fakeIntl, fakeFormProps } from '../../util/test-data'; -import { LINE_ITEM_NIGHT, TX_TRANSITION_PREAUTHORIZE } from '../../util/types'; +import { LINE_ITEM_NIGHT, TRANSITION_REQUEST } from '../../util/types'; import { BookingBreakdown } from '../../components'; import { BookingDatesFormComponent } from './BookingDatesForm'; @@ -51,7 +51,7 @@ describe('BookingDatesForm', () => { expect(userRole).toEqual('customer'); expect(booking.attributes.start).toEqual(startDate); expect(booking.attributes.end).toEqual(endDate); - expect(transaction.attributes.lastTransition).toEqual(TX_TRANSITION_PREAUTHORIZE); + expect(transaction.attributes.lastTransition).toEqual(TRANSITION_REQUEST); expect(transaction.attributes.payinTotal).toEqual(new Money(2198, 'USD')); expect(transaction.attributes.payoutTotal).toEqual(new Money(2198, 'USD')); expect(transaction.attributes.lineItems).toEqual([ diff --git a/src/containers/CheckoutPage/CheckoutPage.duck.js b/src/containers/CheckoutPage/CheckoutPage.duck.js index d7b32e3c..71d57d95 100644 --- a/src/containers/CheckoutPage/CheckoutPage.duck.js +++ b/src/containers/CheckoutPage/CheckoutPage.duck.js @@ -1,7 +1,7 @@ import { pick } from 'lodash'; import { updatedEntities, denormalisedEntities } from '../../util/data'; import { storableError } from '../../util/errors'; -import { TX_TRANSITION_PREAUTHORIZE } from '../../util/types'; +import { TRANSITION_REQUEST } from '../../util/types'; import * as log from '../../util/log'; import { fetchCurrentUserHasOrdersSuccess } from '../../ducks/user.duck'; @@ -107,7 +107,7 @@ export const speculateTransactionError = e => ({ export const initiateOrder = (orderParams, initialMessage) => (dispatch, getState, sdk) => { dispatch(initiateOrderRequest()); const bodyParams = { - transition: TX_TRANSITION_PREAUTHORIZE, + transition: TRANSITION_REQUEST, params: orderParams, }; return sdk.transactions @@ -161,7 +161,7 @@ export const speculateTransaction = (listingId, bookingStart, bookingEnd) => ( ) => { dispatch(speculateTransactionRequest()); const bodyParams = { - transition: TX_TRANSITION_PREAUTHORIZE, + transition: TRANSITION_REQUEST, params: { listingId, bookingStart, diff --git a/src/containers/InboxPage/InboxPage.js b/src/containers/InboxPage/InboxPage.js index f60c68d9..9df8d24f 100644 --- a/src/containers/InboxPage/InboxPage.js +++ b/src/containers/InboxPage/InboxPage.js @@ -10,10 +10,10 @@ import { txHasFirstReview, txIsAccepted, txIsCanceled, - txIsDeclinedOrAutodeclined, - txIsDelivered, + txIsCompleted, + txIsDeclinedOrExpired, txIsEnquired, - txIsPreauthorized, + txIsRequested, txIsReviewed, propTypes, } from '../../util/types'; @@ -67,7 +67,7 @@ const txState = (intl, tx, isOrder) => { id: 'InboxPage.stateAccepted', }), }; - } else if (txIsDeclinedOrAutodeclined(tx)) { + } else if (txIsDeclinedOrExpired(tx)) { return { nameClassName: css.nameDeclined, bookingClassName: css.bookingDeclined, @@ -87,7 +87,7 @@ const txState = (intl, tx, isOrder) => { id: 'InboxPage.stateCanceled', }), }; - } else if (txIsDelivered(tx) || txHasFirstReview(tx) || txIsReviewed(tx)) { + } else if (txIsCompleted(tx) || txHasFirstReview(tx) || txIsReviewed(tx)) { return { nameClassName: css.nameDelivered, bookingClassName: css.bookingDelivered, @@ -156,7 +156,7 @@ export const InboxItem = props => { const otherUserDisplayName = userDisplayName(otherUser, bannedUserDisplayName); const stateData = txState(intl, tx, isOrder); - const isSaleNotification = !isOrder && txIsPreauthorized(tx); + const isSaleNotification = !isOrder && txIsRequested(tx); const rowNotificationDot = isSaleNotification ?

: null; const lastTransitionedAt = formatDate(intl, tx.attributes.lastTransitionedAt); diff --git a/src/containers/InboxPage/InboxPage.test.js b/src/containers/InboxPage/InboxPage.test.js index d31a07d7..484beb8a 100644 --- a/src/containers/InboxPage/InboxPage.test.js +++ b/src/containers/InboxPage/InboxPage.test.js @@ -10,7 +10,7 @@ import { } from '../../util/test-data'; import { InboxPageComponent, InboxItem } from './InboxPage'; import routeConfiguration from '../../routeConfiguration'; -import { LINE_ITEM_NIGHT, TX_TRANSITION_PREAUTHORIZE } from '../../util/types'; +import { LINE_ITEM_NIGHT, TRANSITION_REQUEST } from '../../util/types'; const noop = () => null; @@ -49,7 +49,7 @@ describe('InboxPage', () => { transactions: [ createTransaction({ id: 'order-1', - lastTransition: TX_TRANSITION_PREAUTHORIZE, + lastTransition: TRANSITION_REQUEST, customer, provider, lastTransitionedAt: new Date(Date.UTC(2017, 0, 15)), @@ -57,7 +57,7 @@ describe('InboxPage', () => { }), createTransaction({ id: 'order-2', - lastTransition: TX_TRANSITION_PREAUTHORIZE, + lastTransition: TRANSITION_REQUEST, customer, provider, lastTransitionedAt: new Date(Date.UTC(2016, 0, 15)), @@ -103,7 +103,7 @@ describe('InboxPage', () => { transactions: [ createTransaction({ id: 'sale-1', - lastTransition: TX_TRANSITION_PREAUTHORIZE, + lastTransition: TRANSITION_REQUEST, customer, provider, lastTransitionedAt: new Date(Date.UTC(2017, 0, 15)), @@ -111,7 +111,7 @@ describe('InboxPage', () => { }), createTransaction({ id: 'sale-2', - lastTransition: TX_TRANSITION_PREAUTHORIZE, + lastTransition: TRANSITION_REQUEST, customer, provider, lastTransitionedAt: new Date(Date.UTC(2016, 0, 15)), diff --git a/src/containers/ListingPage/ListingPage.duck.js b/src/containers/ListingPage/ListingPage.duck.js index f6311069..6c6b9d88 100644 --- a/src/containers/ListingPage/ListingPage.duck.js +++ b/src/containers/ListingPage/ListingPage.duck.js @@ -3,7 +3,7 @@ import { types as sdkTypes } from '../../util/sdkLoader'; import { storableError } from '../../util/errors'; import { addMarketplaceEntities } from '../../ducks/marketplaceData.duck'; import { updatedEntities, denormalisedEntities } from '../../util/data'; -import { TX_TRANSITION_ENQUIRE } from '../../util/types'; +import { TRANSITION_ENQUIRE } from '../../util/types'; import { fetchCurrentUser } from '../../ducks/user.duck'; const { UUID } = sdkTypes; @@ -130,7 +130,7 @@ export const fetchReviews = listingId => (dispatch, getState, sdk) => { export const sendEnquiry = (listingId, message) => (dispatch, getState, sdk) => { dispatch(sendEnquiryRequest()); const bodyParams = { - transition: TX_TRANSITION_ENQUIRE, + transition: TRANSITION_ENQUIRE, params: { listingId }, }; return sdk.transactions diff --git a/src/containers/TransactionPage/TransactionPage.duck.js b/src/containers/TransactionPage/TransactionPage.duck.js index b36b8df2..ea007131 100644 --- a/src/containers/TransactionPage/TransactionPage.duck.js +++ b/src/containers/TransactionPage/TransactionPage.duck.js @@ -2,12 +2,12 @@ import { pick } from 'lodash'; import { types as sdkTypes } from '../../util/sdkLoader'; import { isTransactionsTransitionInvalidTransition, storableError } from '../../util/errors'; import { - TX_TRANSITION_ACCEPT, - TX_TRANSITION_DECLINE, - TX_TRANSITION_REVIEW_BY_CUSTOMER_FIRST, - TX_TRANSITION_REVIEW_BY_CUSTOMER_SECOND, - TX_TRANSITION_REVIEW_BY_PROVIDER_FIRST, - TX_TRANSITION_REVIEW_BY_PROVIDER_SECOND, + TRANSITION_ACCEPT, + TRANSITION_DECLINE, + TRANSITION_REVIEW_1_BY_CUSTOMER, + TRANSITION_REVIEW_1_BY_PROVIDER, + TRANSITION_REVIEW_2_BY_CUSTOMER, + TRANSITION_REVIEW_2_BY_PROVIDER, } from '../../util/types'; import * as log from '../../util/log'; import { updatedEntities, denormalisedEntities } from '../../util/data'; @@ -254,7 +254,7 @@ export const acceptSale = id => (dispatch, getState, sdk) => { dispatch(acceptSaleRequest()); return sdk.transactions - .transition({ id, transition: TX_TRANSITION_ACCEPT, params: {} }, { expand: true }) + .transition({ id, transition: TRANSITION_ACCEPT, params: {} }, { expand: true }) .then(response => { dispatch(addMarketplaceEntities(response)); dispatch(acceptSaleSuccess()); @@ -265,7 +265,7 @@ export const acceptSale = id => (dispatch, getState, sdk) => { dispatch(acceptSaleError(storableError(e))); log.error(e, 'accept-sale-failed', { txId: id, - transition: TX_TRANSITION_ACCEPT, + transition: TRANSITION_ACCEPT, }); throw e; }); @@ -278,7 +278,7 @@ export const declineSale = id => (dispatch, getState, sdk) => { dispatch(declineSaleRequest()); return sdk.transactions - .transition({ id, transition: TX_TRANSITION_DECLINE, params: {} }, { expand: true }) + .transition({ id, transition: TRANSITION_DECLINE, params: {} }, { expand: true }) .then(response => { dispatch(addMarketplaceEntities(response)); dispatch(declineSaleSuccess()); @@ -289,7 +289,7 @@ export const declineSale = id => (dispatch, getState, sdk) => { dispatch(declineSaleError(storableError(e))); log.error(e, 'reject-sale-failed', { txId: id, - transition: TX_TRANSITION_DECLINE, + transition: TRANSITION_DECLINE, }); throw e; }); @@ -374,12 +374,10 @@ export const sendMessage = (txId, message) => (dispatch, getState, sdk) => { const REVIEW_TX_INCLUDES = ['reviews', 'reviews.author', 'reviews.subject']; // If other party has already sent a review, we need to make transition to -// TX_TRANSITION_REVIEW_BY__SECOND +// TRANSITION_REVIEW_2_BY_ const sendReviewAsSecond = (id, params, role, dispatch, sdk) => { const transition = - role === CUSTOMER - ? TX_TRANSITION_REVIEW_BY_CUSTOMER_SECOND - : TX_TRANSITION_REVIEW_BY_PROVIDER_SECOND; + role === CUSTOMER ? TRANSITION_REVIEW_2_BY_CUSTOMER : TRANSITION_REVIEW_2_BY_PROVIDER; const include = REVIEW_TX_INCLUDES; @@ -400,15 +398,13 @@ const sendReviewAsSecond = (id, params, role, dispatch, sdk) => { }; // If other party has not yet sent a review, we need to make transition to -// TX_TRANSITION_REVIEW_BY__FIRST +// TRANSITION_REVIEW_1_BY_ // However, the other party might have made the review after previous data synch point. // So, error is likely to happen and then we must try another state transition // by calling sendReviewAsSecond(). const sendReviewAsFirst = (id, params, role, dispatch, sdk) => { const transition = - role === CUSTOMER - ? TX_TRANSITION_REVIEW_BY_CUSTOMER_FIRST - : TX_TRANSITION_REVIEW_BY_PROVIDER_FIRST; + role === CUSTOMER ? TRANSITION_REVIEW_1_BY_CUSTOMER : TRANSITION_REVIEW_1_BY_PROVIDER; const include = REVIEW_TX_INCLUDES; return sdk.transactions @@ -437,8 +433,8 @@ export const sendReview = (role, tx, reviewRating, reviewContent) => (dispatch, const txStateOtherPartyFirst = role === CUSTOMER - ? tx.attributes.lastTransition === TX_TRANSITION_REVIEW_BY_PROVIDER_FIRST - : tx.attributes.lastTransition === TX_TRANSITION_REVIEW_BY_CUSTOMER_FIRST; + ? tx.attributes.lastTransition === TRANSITION_REVIEW_1_BY_PROVIDER + : tx.attributes.lastTransition === TRANSITION_REVIEW_1_BY_CUSTOMER; dispatch(sendReviewRequest()); diff --git a/src/containers/TransactionPage/TransactionPage.test.js b/src/containers/TransactionPage/TransactionPage.test.js index 984d359a..e62e6d3c 100644 --- a/src/containers/TransactionPage/TransactionPage.test.js +++ b/src/containers/TransactionPage/TransactionPage.test.js @@ -8,7 +8,7 @@ import { fakeIntl, } from '../../util/test-data'; import { renderShallow } from '../../util/test-helpers'; -import { TX_TRANSITION_PREAUTHORIZE } from '../../util/types'; +import { TRANSITION_REQUEST } from '../../util/types'; import { TransactionPageComponent } from './TransactionPage'; const noop = () => null; @@ -18,7 +18,7 @@ describe('TransactionPage - Sale', () => { const txId = 'tx-sale-1'; const transaction = createTransaction({ id: txId, - lastTransition: TX_TRANSITION_PREAUTHORIZE, + lastTransition: TRANSITION_REQUEST, booking: createBooking('booking1', { start: new Date(Date.UTC(2017, 5, 10)), end: new Date(Date.UTC(2017, 5, 13)), @@ -60,7 +60,7 @@ describe('TransactionPage - Order', () => { const txId = 'tx-order-1'; const transaction = createTransaction({ id: txId, - lastTransition: TX_TRANSITION_PREAUTHORIZE, + lastTransition: TRANSITION_REQUEST, booking: createBooking('booking1', { start: new Date(Date.UTC(2017, 5, 10)), end: new Date(Date.UTC(2017, 5, 13)), diff --git a/src/ducks/user.duck.js b/src/ducks/user.duck.js index 666ec28c..3449b9bb 100644 --- a/src/ducks/user.duck.js +++ b/src/ducks/user.duck.js @@ -1,6 +1,6 @@ import { updatedEntities, denormalisedEntities } from '../util/data'; import { storableError } from '../util/errors'; -import { TX_TRANSITION_PREAUTHORIZE, TX_TRANSITION_PREAUTHORIZE_ENQUIRY } from '../util/types'; +import { TRANSITION_REQUEST, TRANSITION_REQUEST_AFTER_ENQUIRY } from '../util/types'; import * as log from '../util/log'; import { authInfo } from './Auth.duck'; @@ -311,7 +311,7 @@ export const fetchCurrentUserNotifications = () => (dispatch, getState, sdk) => const apiQueryParams = { only: 'sale', - last_transitions: [TX_TRANSITION_PREAUTHORIZE, TX_TRANSITION_PREAUTHORIZE_ENQUIRY], + last_transitions: [TRANSITION_REQUEST, TRANSITION_REQUEST_AFTER_ENQUIRY], page: 1, per_page: NOTIFICATION_PAGE_SIZE, }; diff --git a/src/util/test-data.js b/src/util/test-data.js index cd4b0e1e..ae0caaa1 100644 --- a/src/util/test-data.js +++ b/src/util/test-data.js @@ -2,10 +2,10 @@ import Decimal from 'decimal.js'; import { types as sdkTypes } from './sdkLoader'; import { nightsBetween } from '../util/dates'; import { - TX_TRANSITION_ACCEPT, + TRANSITION_ACCEPT, + TRANSITION_REQUEST, TX_TRANSITION_ACTOR_CUSTOMER, TX_TRANSITION_ACTOR_PROVIDER, - TX_TRANSITION_PREAUTHORIZE, } from '../util/types'; const { UUID, LatLng, Money } = sdkTypes; @@ -96,7 +96,7 @@ export const createTxTransition = options => { return { at: new Date(Date.UTC(2017, 4, 1)), by: TX_TRANSITION_ACTOR_CUSTOMER, - transition: TX_TRANSITION_PREAUTHORIZE, + transition: TRANSITION_REQUEST, ...options, }; }; @@ -104,7 +104,7 @@ export const createTxTransition = options => { export const createTransaction = options => { const { id, - lastTransition = TX_TRANSITION_ACCEPT, + lastTransition = TRANSITION_ACCEPT, total = new Money(1000, 'USD'), commission = new Money(100, 'USD'), booking = null, @@ -117,12 +117,12 @@ export const createTransaction = options => { createTxTransition({ at: new Date(Date.UTC(2017, 4, 1)), by: TX_TRANSITION_ACTOR_CUSTOMER, - transition: TX_TRANSITION_PREAUTHORIZE, + transition: TRANSITION_REQUEST, }), createTxTransition({ at: new Date(Date.UTC(2017, 5, 1)), by: TX_TRANSITION_ACTOR_PROVIDER, - transition: TX_TRANSITION_ACCEPT, + transition: TRANSITION_ACCEPT, }), ], } = options; diff --git a/src/util/types.js b/src/util/types.js index 4bbb5c4d..f08978a4 100644 --- a/src/util/types.js +++ b/src/util/types.js @@ -160,62 +160,56 @@ propTypes.booking = shape({ }), }); -// When the customer requests a booking, a transaction is created. The -// initial state is preauthorized that is transitioned with the -// initial preauthorize transition. The customer can see this -// transaction in the OrderPage that is linked from the InboxPage. The -// provider sees the transaction in the SalePage. -export const TX_TRANSITION_PREAUTHORIZE = 'transition/preauthorize'; +// When a customer makes a booking to a listing, a transaction is +// created with the initial request transition. +export const TRANSITION_REQUEST = 'transition/preauthorize'; // A customer can also initiate a transaction with an enquiry, and -// then transition that by preauthorization. -export const TX_TRANSITION_ENQUIRE = 'transition/enquire'; -export const TX_TRANSITION_PREAUTHORIZE_ENQUIRY = 'transition/preauthorize-enquiry'; +// then transition that with a request. +export const TRANSITION_ENQUIRE = 'transition/enquire'; +export const TRANSITION_REQUEST_AFTER_ENQUIRY = 'transition/preauthorize-enquiry'; // When the provider accepts or declines a transaction from the // SalePage, it is transitioned with the accept or decline transition. -export const TX_TRANSITION_ACCEPT = 'transition/accept'; -export const TX_TRANSITION_DECLINE = 'transition/decline'; +export const TRANSITION_ACCEPT = 'transition/accept'; +export const TRANSITION_DECLINE = 'transition/decline'; -// If the backend automatically declines the transaction, it is -// transitioned with the auto-decline transition. -export const TX_TRANSITION_AUTO_DECLINE = 'transition/auto-decline'; +// The backend automatically expire the transaction. +export const TRANSITION_EXPIRE = 'transition/auto-decline'; // Admin can also cancel the transition. -export const TX_TRANSITION_CANCEL = 'transition/cancel'; +export const TRANSITION_CANCEL = 'transition/cancel'; -// If the is marked as delivered in the backend, it is transitioned -// with the mark-delivered transition. -export const TX_TRANSITION_MARK_DELIVERED = 'transition/mark-delivered'; +// The backend will mark the transaction completed. +export const TRANSITION_COMPLETE = 'transition/mark-delivered'; -// Review transitions -// Reviews are given through transaction transitions. -// Either party (provider or customer) can be the first to give a review. -export const TX_TRANSITION_REVIEW_BY_PROVIDER_FIRST = 'transition/review-by-provider-first'; -export const TX_TRANSITION_REVIEW_BY_PROVIDER_SECOND = 'transition/review-by-provider-second'; -export const TX_TRANSITION_REVIEW_BY_CUSTOMER_FIRST = 'transition/review-by-customer-first'; -export const TX_TRANSITION_REVIEW_BY_CUSTOMER_SECOND = 'transition/review-by-customer-second'; -export const TX_TRANSITION_MARK_REVIEWED_BY_CUSTOMER = 'transition/mark-reviewed-by-customer'; -export const TX_TRANSITION_MARK_REVIEWED_BY_PROVIDER = 'transition/mark-reviewed-by-provider'; -export const TX_TRANSITION_AUTO_COMPLETE_WITHOUT_REVIEWS = - 'transition/auto-complete-without-reviews'; +// Reviews are given through transaction transitions. Review 1 can be +// by provider or customer, and review 2 will be the other party of +// the transaction. +export const TRANSITION_REVIEW_1_BY_PROVIDER = 'transition/review-by-provider-first'; +export const TRANSITION_REVIEW_2_BY_PROVIDER = 'transition/review-by-provider-second'; +export const TRANSITION_REVIEW_1_BY_CUSTOMER = 'transition/review-by-customer-first'; +export const TRANSITION_REVIEW_2_BY_CUSTOMER = 'transition/review-by-customer-second'; +export const TRANSITION_EXPIRE_CUSTOMER_REVIEW_PERIOD = 'transition/mark-reviewed-by-customer'; +export const TRANSITION_EXPIRE_PROVIDER_REVIEW_PERIOD = 'transition/mark-reviewed-by-provider'; +export const TRANSITION_EXPIRE_REVIEW_PERIOD = 'transition/auto-complete-without-reviews'; -export const TX_TRANSITIONS = [ - TX_TRANSITION_ENQUIRE, - TX_TRANSITION_PREAUTHORIZE_ENQUIRY, - TX_TRANSITION_PREAUTHORIZE, - TX_TRANSITION_ACCEPT, - TX_TRANSITION_DECLINE, - TX_TRANSITION_AUTO_DECLINE, - TX_TRANSITION_CANCEL, - TX_TRANSITION_MARK_DELIVERED, - TX_TRANSITION_REVIEW_BY_PROVIDER_FIRST, - TX_TRANSITION_REVIEW_BY_PROVIDER_SECOND, - TX_TRANSITION_REVIEW_BY_CUSTOMER_FIRST, - TX_TRANSITION_REVIEW_BY_CUSTOMER_SECOND, - TX_TRANSITION_MARK_REVIEWED_BY_CUSTOMER, - TX_TRANSITION_MARK_REVIEWED_BY_PROVIDER, - TX_TRANSITION_AUTO_COMPLETE_WITHOUT_REVIEWS, +export const TRANSITIONS = [ + TRANSITION_ACCEPT, + TRANSITION_CANCEL, + TRANSITION_COMPLETE, + TRANSITION_DECLINE, + TRANSITION_ENQUIRE, + TRANSITION_EXPIRE, + TRANSITION_EXPIRE_CUSTOMER_REVIEW_PERIOD, + TRANSITION_EXPIRE_PROVIDER_REVIEW_PERIOD, + TRANSITION_EXPIRE_REVIEW_PERIOD, + TRANSITION_REQUEST, + TRANSITION_REQUEST_AFTER_ENQUIRY, + TRANSITION_REVIEW_1_BY_CUSTOMER, + TRANSITION_REVIEW_1_BY_PROVIDER, + TRANSITION_REVIEW_2_BY_CUSTOMER, + TRANSITION_REVIEW_2_BY_PROVIDER, ]; // Roles of actors that perform transaction transitions @@ -233,52 +227,46 @@ export const TX_TRANSITION_ACTORS = [ const txLastTransition = tx => ensureTransaction(tx).attributes.lastTransition; -export const txIsEnquired = tx => txLastTransition(tx) === TX_TRANSITION_ENQUIRE; +export const txIsEnquired = tx => txLastTransition(tx) === TRANSITION_ENQUIRE; -export const txIsPreauthorized = tx => { +export const txIsRequested = tx => { const transition = txLastTransition(tx); - return ( - transition === TX_TRANSITION_PREAUTHORIZE || transition === TX_TRANSITION_PREAUTHORIZE_ENQUIRY - ); + return transition === TRANSITION_REQUEST || transition === TRANSITION_REQUEST_AFTER_ENQUIRY; }; -export const txIsAccepted = tx => txLastTransition(tx) === TX_TRANSITION_ACCEPT; +export const txIsAccepted = tx => txLastTransition(tx) === TRANSITION_ACCEPT; -export const txIsDeclined = tx => txLastTransition(tx) === TX_TRANSITION_DECLINE; +export const txIsDeclined = tx => txLastTransition(tx) === TRANSITION_DECLINE; -export const txIsAutodeclined = tx => txLastTransition(tx) === TX_TRANSITION_AUTO_DECLINE; +export const txIsExpired = tx => txLastTransition(tx) === TRANSITION_EXPIRE; -export const txIsDeclinedOrAutodeclined = tx => txIsDeclined(tx) || txIsAutodeclined(tx); +export const txIsDeclinedOrExpired = tx => txIsDeclined(tx) || txIsExpired(tx); -export const txIsCanceled = tx => txLastTransition(tx) === TX_TRANSITION_CANCEL; +export const txIsCanceled = tx => txLastTransition(tx) === TRANSITION_CANCEL; -export const txIsDelivered = tx => txLastTransition(tx) === TX_TRANSITION_MARK_DELIVERED; +export const txIsCompleted = tx => txLastTransition(tx) === TRANSITION_COMPLETE; export const txHasFirstReview = tx => firstReviewTransitions.includes(txLastTransition(tx)); export const txIsReviewed = tx => areReviewsCompleted(txLastTransition(tx)); -// TODO: rename to `transition` -propTypes.txTransition = shape({ +propTypes.transition = shape({ at: instanceOf(Date).isRequired, by: oneOf(TX_TRANSITION_ACTORS).isRequired, - transition: oneOf(TX_TRANSITIONS).isRequired, + transition: oneOf(TRANSITIONS).isRequired, }); -const firstReviewTransitions = [ - TX_TRANSITION_REVIEW_BY_PROVIDER_FIRST, - TX_TRANSITION_REVIEW_BY_CUSTOMER_FIRST, -]; +const firstReviewTransitions = [TRANSITION_REVIEW_1_BY_CUSTOMER, TRANSITION_REVIEW_1_BY_PROVIDER]; // Check if tx transition is followed by a state where // reviews are completed export const areReviewsCompleted = transition => { return [ - TX_TRANSITION_REVIEW_BY_PROVIDER_SECOND, - TX_TRANSITION_REVIEW_BY_CUSTOMER_SECOND, - TX_TRANSITION_MARK_REVIEWED_BY_CUSTOMER, - TX_TRANSITION_MARK_REVIEWED_BY_PROVIDER, - TX_TRANSITION_AUTO_COMPLETE_WITHOUT_REVIEWS, + TRANSITION_EXPIRE_CUSTOMER_REVIEW_PERIOD, + TRANSITION_EXPIRE_PROVIDER_REVIEW_PERIOD, + TRANSITION_EXPIRE_REVIEW_PERIOD, + TRANSITION_REVIEW_2_BY_CUSTOMER, + TRANSITION_REVIEW_2_BY_PROVIDER, ].includes(transition); }; @@ -318,7 +306,7 @@ propTypes.transaction = shape({ attributes: shape({ createdAt: instanceOf(Date).isRequired, lastTransitionedAt: instanceOf(Date).isRequired, - lastTransition: oneOf(TX_TRANSITIONS).isRequired, + lastTransition: oneOf(TRANSITIONS).isRequired, // An enquiry won't need a total sum nor a booking so these are // optional. @@ -335,7 +323,7 @@ propTypes.transaction = shape({ reversal: bool.isRequired, }) ).isRequired, - transitions: arrayOf(propTypes.txTransition).isRequired, + transitions: arrayOf(propTypes.transition).isRequired, }), booking: propTypes.booking, listing: propTypes.listing,