41 lines
1.3 KiB
TypeScript
41 lines
1.3 KiB
TypeScript
/**
|
|
* External dependencies
|
|
*/
|
|
import { camelCase, mapKeys } from 'lodash';
|
|
import { Cart, CartResponse } from '@woocommerce/types';
|
|
import { select } from '@wordpress/data';
|
|
|
|
/**
|
|
* Internal dependencies
|
|
*/
|
|
import { STORE_KEY as VALIDATION_STORE_KEY } from '../validation/constants';
|
|
|
|
export const mapCartResponseToCart = ( responseCart: CartResponse ): Cart => {
|
|
return mapKeys( responseCart, ( _, key ) =>
|
|
camelCase( key )
|
|
) as unknown as Cart;
|
|
};
|
|
|
|
export const shippingAddressHasValidationErrors = () => {
|
|
const validationStore = select( VALIDATION_STORE_KEY );
|
|
// Check if the shipping address form has validation errors - if not then we know the full required
|
|
// address has been pushed to the server.
|
|
const stateValidationErrors =
|
|
validationStore.getValidationError( 'shipping_state' );
|
|
const address1ValidationErrors =
|
|
validationStore.getValidationError( 'shipping_address_1' );
|
|
const countryValidationErrors =
|
|
validationStore.getValidationError( 'shipping_country' );
|
|
const postcodeValidationErrors =
|
|
validationStore.getValidationError( 'shipping_postcode' );
|
|
const cityValidationErrors =
|
|
validationStore.getValidationError( 'shipping_city' );
|
|
return [
|
|
cityValidationErrors,
|
|
stateValidationErrors,
|
|
address1ValidationErrors,
|
|
countryValidationErrors,
|
|
postcodeValidationErrors,
|
|
].some( ( entry ) => typeof entry !== 'undefined' );
|
|
};
|