Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
Size: Mime:
import { oneRouter } from '@skava/router';
import { isErrorLikeResponse } from '@skava/is-error-like-response';
import { errorContainer } from '@skava/packages/core/notifications';
import { cartContainer } from '@skava/packages/core/cart/state/containers';
import { analyticsContainer } from '@skava/packages/core/analytics';
import { toastMessage } from '../fixture';
import { recalculatePaymentBinding } from '../../../state';
import { deleteAllPaymentsBinding } from '../../PaymentMethods';
import { submitOrderBinding } from './bindings';
class PlaceOrderContainer {
    constructor() {
        this.isSubmittingOrder = false;
        this.dynamicOrderId = '';
    }
}
export const placeOrderContainer = new PlaceOrderContainer();
export function trackSubmitOrder(dynamicOrderId) {
    const products = cartContainer.products;
    const orderDetails = cartContainer.math;
    analyticsContainer.trackPurchaseEcommerce(products, dynamicOrderId, orderDetails);
}
export async function submitOrder() {
    if (!placeOrderContainer.isSubmittingOrder) {
        try {
            placeOrderContainer.isSubmittingOrder = true;
            const response = await handleSubmitOrder();
            placeOrderContainer.isSubmittingOrder = false;
            /**
             * @todo this is unsafe
             */
            placeOrderContainer.dynamicOrderId = response.submitOrderResponse.data.submitOrder.orderId;
            trackSubmitOrder(placeOrderContainer.dynamicOrderId);
            oneRouter.update('/orderConfirmation');
        }
        catch (submitError) {
            console.error(submitError);
            errorContainer.setMessage(submitError.message);
        }
    }
    else {
        errorContainer.setMessage('Already processing');
    }
}
export async function handleSubmitOrder() {
    const { response, status, recalculateOrder } = await recalculatePaymentBinding();
    if (status.includes(toastMessage.failureMessage)) {
        errorContainer.setMessage(toastMessage.reviewOrderFailure);
        return {};
    }
    else if (isErrorLikeResponse(recalculateOrder)) {
        /**
         * Some times we will get more than one payment cards in
         * response so need to delete them all
         */
        const deleteResponse = await deleteAllPaymentsBinding();
        return { deleteResponse };
    }
    else {
        console.debug('[PlaceOrder] step_4 submitOrder');
        const submitOrderResponse = await submitOrderBinding();
        console.debug('[PlaceOrder] step_5 submitted');
        // finally clear the shipping address form from local storage for SKREACT-4777
        localStorage.removeItem('shippingAddressForm');
        return { submitOrderResponse };
    }
}
//# sourceMappingURL=container.js.map