mirror of
https://github.com/kingomarnajjar/flex-template-web.git
synced 2026-07-27 19:42:11 +10:00
Merge pull request #639 from sharetribe/rename-transition-labels
Rename transition label references
This commit is contained in:
commit
f66357fc78
19 changed files with 237 additions and 254 deletions
|
|
@ -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'),
|
||||
|
|
|
|||
|
|
@ -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 ? (
|
||||
<FormattedMessage id="ActivityFeed.ownTransitionRequest" values={{ listingTitle }} />
|
||||
) : (
|
||||
|
|
@ -147,27 +147,27 @@ const resolveTransitionMessage = (
|
|||
values={{ displayName, listingTitle }}
|
||||
/>
|
||||
);
|
||||
case TX_TRANSITION_ACCEPT:
|
||||
case TRANSITION_ACCEPT:
|
||||
return isOwnTransition ? (
|
||||
<FormattedMessage id="ActivityFeed.ownTransitionAccept" />
|
||||
) : (
|
||||
<FormattedMessage id="ActivityFeed.transitionAccept" values={{ displayName }} />
|
||||
);
|
||||
case TX_TRANSITION_DECLINE:
|
||||
case TRANSITION_DECLINE:
|
||||
return isOwnTransition ? (
|
||||
<FormattedMessage id="ActivityFeed.ownTransitionDecline" />
|
||||
) : (
|
||||
<FormattedMessage id="ActivityFeed.transitionDecline" />
|
||||
);
|
||||
case TX_TRANSITION_AUTO_DECLINE:
|
||||
case TRANSITION_EXPIRE:
|
||||
return ownRole === TX_TRANSITION_ACTOR_PROVIDER ? (
|
||||
<FormattedMessage id="ActivityFeed.ownTransitionAutoDecline" />
|
||||
) : (
|
||||
<FormattedMessage id="ActivityFeed.transitionAutoDecline" values={{ displayName }} />
|
||||
);
|
||||
case TX_TRANSITION_CANCEL:
|
||||
case TRANSITION_CANCEL:
|
||||
return <FormattedMessage id="ActivityFeed.transitionCancel" />;
|
||||
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 <FormattedMessage id="ActivityFeed.transitionComplete" values={{ reviewLink }} />;
|
||||
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 <FormattedMessage id="ActivityFeed.ownTransitionReview" values={{ displayName }} />;
|
||||
} 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 <FormattedMessage id="ActivityFeed.ownTransitionReview" values={{ displayName }} />;
|
||||
} 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,
|
||||
|
|
|
|||
|
|
@ -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: [
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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: [
|
||||
|
|
|
|||
|
|
@ -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 => {
|
|||
</span>
|
||||
</h1>
|
||||
);
|
||||
} else if (txIsPreauthorized(transaction)) {
|
||||
} else if (txIsRequested(transaction)) {
|
||||
return (
|
||||
<h1 className={classes}>
|
||||
<span className={css.mainTitle}>
|
||||
|
|
@ -245,7 +245,7 @@ export const OrderTitle = props => {
|
|||
/>
|
||||
</h1>
|
||||
);
|
||||
} else if (txIsAutodeclined(transaction)) {
|
||||
} else if (txIsExpired(transaction)) {
|
||||
return (
|
||||
<h1 className={classes}>
|
||||
<FormattedMessage
|
||||
|
|
@ -264,7 +264,7 @@ export const OrderTitle = props => {
|
|||
</h1>
|
||||
);
|
||||
} 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 (
|
||||
<p className={classes}>
|
||||
<FormattedMessage id="TransactionPanel.orderPreauthorizedInfo" values={{ providerName }} />
|
||||
|
|
@ -331,7 +331,7 @@ export const SaleTitle = props => {
|
|||
/>
|
||||
</h1>
|
||||
);
|
||||
} else if (txIsPreauthorized(transaction)) {
|
||||
} else if (txIsRequested(transaction)) {
|
||||
return (
|
||||
<h1 className={classes}>
|
||||
<FormattedMessage
|
||||
|
|
@ -358,7 +358,7 @@ export const SaleTitle = props => {
|
|||
/>
|
||||
</h1>
|
||||
);
|
||||
} else if (txIsAutodeclined(transaction)) {
|
||||
} else if (txIsExpired(transaction)) {
|
||||
return (
|
||||
<h1 className={classes}>
|
||||
<FormattedMessage
|
||||
|
|
@ -377,7 +377,7 @@ export const SaleTitle = props => {
|
|||
</h1>
|
||||
);
|
||||
} 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 (
|
||||
<p className={classes}>
|
||||
<FormattedMessage id="TransactionPanel.saleRequestedInfo" values={{ customerName }} />
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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)),
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
},
|
||||
],
|
||||
},
|
||||
|
|
|
|||
|
|
@ -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([
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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 ? <div className={css.notificationDot} /> : null;
|
||||
const lastTransitionedAt = formatDate(intl, tx.attributes.lastTransitionedAt);
|
||||
|
||||
|
|
|
|||
|
|
@ -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)),
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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_<CUSTOMER/PROVIDER>_SECOND
|
||||
// TRANSITION_REVIEW_2_BY_<CUSTOMER/PROVIDER>
|
||||
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_<CUSTOMER/PROVIDER>_FIRST
|
||||
// TRANSITION_REVIEW_1_BY_<CUSTOMER/PROVIDER>
|
||||
// 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());
|
||||
|
||||
|
|
|
|||
|
|
@ -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)),
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue