File "normalize.js"
Full Path: /home/jlklyejr/public_html/post-date/wp-content/plugins/rave-woocommerce-payment-gateway/client/blocks/normalize.js
File size: 3.23 KB
MIME-type: text/x-java
Charset: utf-8
/**
* @typedef {import('@woocommerce/type-defs/registered-payment-method-props').PreparedCartTotalItem} CartTotalItem
* @typedef {import('@woocommerce/type-defs/cart').CartShippingOption} CartShippingOption
* @typedef {import('@woocommerce/type-defs/shipping').ShippingAddress} CartShippingAddress
* @typedef {import('@woocommerce/type-defs/billing').BillingData} CartBillingAddress
*/
import { getBlocksConfiguration } from 'wcflutterwave/blocks/utils';
/**
* Normalizes order data received upon creating an order using the store's AJAX API.
*
* @param {Object} sourceEvent - The source event that triggered the creation of the order.
* @param {string} paymentRequestType - The payment request type.
*/
const normalizeOrderData = ( sourceEvent, paymentRequestType ) => {
const { source } = sourceEvent;
const email = source?.owner?.email;
const phone = source?.owner?.phone;
const billing = source?.owner?.address;
const name = source?.owner?.name;
const shipping = sourceEvent?.shippingAddress;
const data = {
_wpnonce: getBlocksConfiguration()?.nonce?.checkout,
billing_first_name:
name?.split( ' ' )?.slice( 0, 1 )?.join( ' ' ) ?? '',
billing_last_name: name?.split( ' ' )?.slice( 1 )?.join( ' ' ) ?? '',
billing_company: '',
billing_email: email ?? sourceEvent?.payerEmail,
billing_phone:
phone ?? sourceEvent?.payerPhone?.replace( '/[() -]/g', '' ),
billing_country: billing?.country ?? '',
billing_address_1: billing?.line1 ?? '',
billing_address_2: billing?.line2 ?? '',
billing_city: billing?.city ?? '',
billing_state: billing?.state ?? '',
billing_postcode: billing?.postal_code ?? '',
shipping_first_name: '',
shipping_last_name: '',
shipping_company: '',
shipping_country: '',
shipping_address_1: '',
shipping_address_2: '',
shipping_city: '',
shipping_state: '',
shipping_postcode: '',
shipping_method: [ sourceEvent?.shippingOption?.id ],
order_comments: '',
payment_method: 'rave',
ship_to_different_address: 1,
terms: 1,
payment_request_type: paymentRequestType,
};
if ( shipping ) {
data.shipping_first_name = shipping?.recipient
?.split( ' ' )
?.slice( 0, 1 )
?.join( ' ' );
data.shipping_last_name = shipping?.recipient
?.split( ' ' )
?.slice( 1 )
?.join( ' ' );
data.shipping_company = shipping?.organization;
data.shipping_country = shipping?.country;
data.shipping_address_1 = shipping?.addressLine?.[ 0 ] ?? '';
data.shipping_address_2 = shipping?.addressLine?.[ 1 ] ?? '';
data.shipping_city = shipping?.city;
data.shipping_state = shipping?.region;
data.shipping_postcode = shipping?.postalCode;
}
return data;
};
/**
* Normalizes an address received upon updating shipping options using the store's AJAX API.
*
* @param {Object} address - The address that needs to be normalized.
* @return {Object} The normalized address.
*/
const normalizeAddress = ( address ) => {
return {
country: address.country,
state: address.region,
postcode: address.postalCode,
city: address.city,
address:
typeof address.addressLine[ 0 ] === 'undefined'
? ''
: address.addressLine[ 0 ],
address_2:
typeof address.addressLine[ 1 ] === 'undefined'
? ''
: address.addressLine[ 1 ],
};
};
export { normalizeOrderData, normalizeAddress };