Skip to content

Commit

Permalink
wip: privileged transition on checkout page
Browse files Browse the repository at this point in the history
  • Loading branch information
kpuputti committed Jun 16, 2020
1 parent 8630dc2 commit 77a1c09
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 5 deletions.
2 changes: 1 addition & 1 deletion src/config.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ const sortSearchByDistance = false;
//
// In a way, 'processAlias' defines which transaction process (or processes)
// this particular web application is able to handle.
const bookingProcessAlias = 'preauth-nightly-booking/release-1';
const bookingProcessAlias = 'privileged-custom-pricing/release-1';

// The transaction line item code for the main unit type in bookings.
//
Expand Down
44 changes: 40 additions & 4 deletions src/containers/CheckoutPage/CheckoutPage.duck.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import pick from 'lodash/pick';
import config from '../../config';
import { initiatePrivileged } from '../../util/api';
import { denormalisedResponseEntities } from '../../util/data';
import { storableError } from '../../util/errors';
import {
Expand Down Expand Up @@ -161,6 +162,12 @@ export const stripeCustomerError = e => ({

export const initiateOrder = (orderParams, transactionId) => (dispatch, getState, sdk) => {
dispatch(initiateOrderRequest());

const bookingData = {
startDate: orderParams.bookingStart,
endDate: orderParams.bookingEnd,
};

const bodyParams = transactionId
? {
id: transactionId,
Expand All @@ -177,9 +184,32 @@ export const initiateOrder = (orderParams, transactionId) => (dispatch, getState
expand: true,
};

const createOrder = transactionId ? sdk.transactions.transition : sdk.transactions.initiate;
if (!transactionId) {
return initiatePrivileged({ isSpeculative: false, bookingData, bodyParams, queryParams })
.then(response => {
const entities = denormalisedResponseEntities(response);
const order = entities[0];
dispatch(initiateOrderSuccess(order));
dispatch(fetchCurrentUserHasOrdersSuccess(true));
return order;
})
.catch(e => {
dispatch(initiateOrderError(storableError(e)));
const transactionIdMaybe = transactionId ? { transactionId: transactionId.uuid } : {};
log.error(e, 'initiate-order-failed', {
...transactionIdMaybe,
listingId: orderParams.listingId.uuid,
bookingStart: orderParams.bookingStart,
bookingEnd: orderParams.bookingEnd,
});
throw e;
});
}

// TODO transition transaction

return createOrder(bodyParams, queryParams)
return sdk.transactions
.transition(bodyParams, queryParams)
.then(response => {
const entities = denormalisedResponseEntities(response);
const order = entities[0];
Expand Down Expand Up @@ -261,6 +291,12 @@ export const sendMessage = params => (dispatch, getState, sdk) => {
*/
export const speculateTransaction = params => (dispatch, getState, sdk) => {
dispatch(speculateTransactionRequest());

const bookingData = {
startDate: params.bookingStart,
endDate: params.bookingEnd,
};

const bodyParams = {
transition: TRANSITION_REQUEST_PAYMENT,
processAlias: config.bookingProcessAlias,
Expand All @@ -273,8 +309,8 @@ export const speculateTransaction = params => (dispatch, getState, sdk) => {
include: ['booking', 'provider'],
expand: true,
};
return sdk.transactions
.initiateSpeculative(bodyParams, queryParams)

return initiatePrivileged({ isSpeculative: true, bookingData, bodyParams, queryParams })
.then(response => {
const entities = denormalisedResponseEntities(response);
if (entities.length !== 1) {
Expand Down

0 comments on commit 77a1c09

Please sign in to comment.