@commercelayer/react-components 3.9.2 → 3.9.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/components/GiftCardOrCouponForm.js +1 -1
- package/lib/components/LineItemsContainer.js +1 -1
- package/lib/components/OrderContainer.d.ts +1 -1
- package/lib/components/OrderContainer.js +1 -1
- package/lib/components/ShipmentsContainer.js +1 -1
- package/lib/components/utils/getAllErrors.js +1 -1
- package/lib/context/OrderContext.d.ts +1 -1
- package/lib/reducers/OrderReducer.d.ts +2 -1
- package/lib/reducers/OrderReducer.js +1 -1
- package/lib/reducers/PlaceOrderReducer.d.ts +1 -1
- package/lib/reducers/PlaceOrderReducer.js +1 -1
- package/lib/utils/shipments.d.ts +1 -1
- package/lib/utils/shipments.js +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
import{__rest}from"tslib";import{jsx as _jsx}from"react/jsx-runtime";import useRapidForm from"rapid-form";import{useContext,useEffect,useRef,useState}from"react";import CouponAndGiftCardFormContext from"../context/CouponAndGiftCardFormContext";import OrderContext from"../context/OrderContext";import isEmpty from"lodash/isEmpty";import components from"../config/components";import camelCase from"lodash/camelCase";import dropWhile from"lodash/dropWhile";import has from"lodash/has";import{findIndex}from"lodash";const propTypes=components.GiftCardOrCouponForm.propTypes,GiftCardOrCouponForm=props=>{const{children,autoComplete="on",onSubmit}=props,p=__rest(props,["children","autoComplete","onSubmit"]),{validation,values,reset}=useRapidForm(),[codeType,setCodeType]=useState("gift_card_or_coupon_code"),{setGiftCardOrCouponCode,order,errors,setOrderErrors}=useContext(OrderContext),ref=useRef(null),inputName="gift_card_or_coupon_code";useEffect(()=>{var _a,_b,_c,_d;if(((_a=values[inputName])===null||_a===void 0?void 0:_a.value)===""&&findIndex(errors,{field:camelCase(inputName)})!==-1){const err=dropWhile(errors,i=>i.field===camelCase(inputName));setOrderErrors(
|
|
1
|
+
import{__rest}from"tslib";import{jsx as _jsx}from"react/jsx-runtime";import useRapidForm from"rapid-form";import{useContext,useEffect,useRef,useState}from"react";import CouponAndGiftCardFormContext from"../context/CouponAndGiftCardFormContext";import OrderContext from"../context/OrderContext";import isEmpty from"lodash/isEmpty";import components from"../config/components";import camelCase from"lodash/camelCase";import dropWhile from"lodash/dropWhile";import has from"lodash/has";import{findIndex}from"lodash";const propTypes=components.GiftCardOrCouponForm.propTypes,GiftCardOrCouponForm=props=>{const{children,autoComplete="on",onSubmit}=props,p=__rest(props,["children","autoComplete","onSubmit"]),{validation,values,reset}=useRapidForm(),[codeType,setCodeType]=useState("gift_card_or_coupon_code"),{setGiftCardOrCouponCode,order,errors,setOrderErrors}=useContext(OrderContext),ref=useRef(null),inputName="gift_card_or_coupon_code";useEffect(()=>{var _a,_b,_c,_d;if(((_a=values[inputName])===null||_a===void 0?void 0:_a.value)===""&&findIndex(errors,{field:camelCase(inputName)})!==-1){const err=dropWhile(errors,i=>i.field===camelCase(inputName));setOrderErrors(err),onSubmit&&onSubmit({value:(_b=values[inputName])===null||_b===void 0?void 0:_b.value,success:!1})}((_c=values[inputName])===null||_c===void 0?void 0:_c.value)===""&&(setOrderErrors([]),onSubmit&&onSubmit({value:(_d=values[inputName])===null||_d===void 0?void 0:_d.value,success:!1}))},[values]),useEffect(()=>{(order==null?void 0:order.gift_card_code)&&!(order==null?void 0:order.coupon_code)&&setCodeType("coupon_code"),!(order==null?void 0:order.gift_card_code)&&(order==null?void 0:order.coupon_code)&&setCodeType("gift_card_code"),!(order==null?void 0:order.gift_card_code)&&!(order==null?void 0:order.coupon_code)&&setCodeType("gift_card_or_coupon_code")},[order]);const handleSubmit=async e=>{var _a;e.preventDefault();const code=has(values,inputName)?values[inputName].value:void 0;if(code){const{success}=await setGiftCardOrCouponCode({code,codeType}),value=(_a=values[inputName])===null||_a===void 0?void 0:_a.value;onSubmit&&onSubmit({success,value}),success&&reset(e)}};return(order==null?void 0:order.gift_card_code)&&(order==null?void 0:order.coupon_code)||isEmpty(order)?null:_jsx(CouponAndGiftCardFormContext.Provider,Object.assign({value:{validation,codeType}},{children:_jsx("form",Object.assign({ref,autoComplete,onSubmit:handleSubmit},p,{children}))}))};GiftCardOrCouponForm.propTypes=propTypes;export default GiftCardOrCouponForm;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as _jsx}from"react/jsx-runtime";import{useEffect,useReducer,useContext}from"react";import lineItemReducer,{lineItemInitialState,updateLineItem,deleteLineItem}from"../reducers/LineItemReducer";import OrderContext from"../context/OrderContext";import LineItemContext from"../context/LineItemContext";import CommerceLayerContext from"../context/CommerceLayerContext";import{isEmpty}from"lodash";import components from"../config/components";const propTypes=components.LineItemsContainer.propTypes,defaultProps=components.LineItemsContainer.defaultProps,displayName=components.LineItemsContainer.displayName,LineItemsContainer=props=>{const{children,loader="Loading..."}=props,{order,addResourceToInclude,include,orderId,getOrder,includeLoaded}=useContext(OrderContext),config=useContext(CommerceLayerContext),[state,dispatch]=useReducer(lineItemReducer,lineItemInitialState);useEffect(()=>((include==null?void 0:include.includes("line_items.line_item_options.sku_option"))?(includeLoaded==null?void 0:includeLoaded["line_items.line_item_options.sku_option"])||addResourceToInclude({newResourceLoaded:{"line_items.line_item_options.sku_option":!0}}):addResourceToInclude({newResource:"line_items.line_item_options.sku_option"}),!isEmpty(order)&&(order==null?void 0:order.line_items)&&dispatch({type:"setLineItems",payload:{lineItems:order.line_items}}),()=>{isEmpty(order)&&dispatch({type:"setLineItems",payload:{lineItems:[]}})}),[order,include,includeLoaded]);const lineItemValue=Object.assign(Object.assign({},state),{loader,updateLineItem:(lineItemId,quantity=1)=>updateLineItem({lineItemId,quantity,dispatch,config,getOrder,orderId,errors:state.errors}),deleteLineItem:lineItemId=>deleteLineItem({lineItemId,dispatch,config,getOrder,orderId,errors:state.errors})});return _jsx(LineItemContext.Provider,Object.assign({value:lineItemValue},{children:state.loading?loader:children}))};LineItemsContainer.propTypes=propTypes,LineItemsContainer.defaultProps=defaultProps,LineItemsContainer.displayName=displayName;export default LineItemsContainer;
|
|
1
|
+
import{jsx as _jsx}from"react/jsx-runtime";import{useEffect,useReducer,useContext}from"react";import lineItemReducer,{lineItemInitialState,updateLineItem,deleteLineItem}from"../reducers/LineItemReducer";import OrderContext from"../context/OrderContext";import LineItemContext from"../context/LineItemContext";import CommerceLayerContext from"../context/CommerceLayerContext";import{isEmpty}from"lodash";import components from"../config/components";const propTypes=components.LineItemsContainer.propTypes,defaultProps=components.LineItemsContainer.defaultProps,displayName=components.LineItemsContainer.displayName,LineItemsContainer=props=>{const{children,loader="Loading..."}=props,{order,addResourceToInclude,include,orderId,getOrder,includeLoaded}=useContext(OrderContext),config=useContext(CommerceLayerContext),[state,dispatch]=useReducer(lineItemReducer,lineItemInitialState);useEffect(()=>((include==null?void 0:include.includes("line_items.line_item_options.sku_option"))?(includeLoaded==null?void 0:includeLoaded["line_items.line_item_options.sku_option"])||addResourceToInclude({newResourceLoaded:{"line_items.line_item_options.sku_option":!0,"line_items.item":!0}}):addResourceToInclude({newResource:["line_items.line_item_options.sku_option","line_items.item"]}),!isEmpty(order)&&(order==null?void 0:order.line_items)&&dispatch({type:"setLineItems",payload:{lineItems:order.line_items}}),()=>{isEmpty(order)&&dispatch({type:"setLineItems",payload:{lineItems:[]}})}),[order,include,includeLoaded]);const lineItemValue=Object.assign(Object.assign({},state),{loader,updateLineItem:(lineItemId,quantity=1)=>updateLineItem({lineItemId,quantity,dispatch,config,getOrder,orderId,errors:state.errors}),deleteLineItem:lineItemId=>deleteLineItem({lineItemId,dispatch,config,getOrder,orderId,errors:state.errors})});return _jsx(LineItemContext.Provider,Object.assign({value:lineItemValue},{children:state.loading?loader:children}))};LineItemsContainer.propTypes=propTypes,LineItemsContainer.defaultProps=defaultProps,LineItemsContainer.displayName=displayName;export default LineItemsContainer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import React,{ReactNode}from'react';import{BaseMetadataObject}from'../typings/index';import{OrderCreate}from'@commercelayer/sdk';declare type OrderContainerProps={children:ReactNode;metadata?:BaseMetadataObject;attributes?:OrderCreate;orderId?:string;};declare const OrderContainer:React.FunctionComponent<OrderContainerProps>;export default OrderContainer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as _jsx}from"react/jsx-runtime";import{useEffect,useReducer,useContext,useMemo}from"react";import orderReducer,{createOrder,getApiOrder,setOrderErrors,setOrder,orderInitialState}from"../reducers/OrderReducer";import CommerceLayerContext from"../context/CommerceLayerContext";import OrderContext,{defaultOrderContext}from"../context/OrderContext";import{unsetOrderState}from"../reducers/OrderReducer";import components from"../config/components";import OrderStorageContext from"../context/OrderStorageContext";const propTypes=components.OrderContainer.propTypes,defaultProps=components.OrderContainer.defaultProps,displayName=components.OrderContainer.displayName,OrderContainer=props=>{const{orderId,children,metadata,attributes}=props,[state,dispatch]=useReducer(orderReducer,orderInitialState),config=useContext(CommerceLayerContext),{persistKey,clearWhenPlaced,getLocalOrder,setLocalOrder,deleteLocalOrder}=useContext(OrderStorageContext);useEffect(()=>{var _a;const startRequest=Object.keys((state==null?void 0:state.includeLoaded)||{}).filter(key=>{var _a2;return((_a2=state==null?void 0:state.includeLoaded)===null||_a2===void 0?void 0:_a2[key])===!0});if(config.accessToken){const localOrder=persistKey?getLocalOrder(persistKey):orderId;localOrder&&(dispatch({type:"setOrderId",payload:{orderId:localOrder}}),!state.order&&startRequest.length===((_a=state.include)===null||_a===void 0?void 0:_a.length)&&getApiOrder({id:localOrder,dispatch,config,persistKey,clearWhenPlaced:!!(persistKey&&clearWhenPlaced),deleteLocalOrder,state}))}return()=>unsetOrderState(dispatch)},[config.accessToken,orderId,state.includeLoaded]);const orderValue=useMemo(()=>Object.assign(Object.assign({},state),{setOrder:order=>setOrder(order,dispatch),getOrder:id=>getApiOrder({id,dispatch,config,state}),setOrderErrors:errors=>setOrderErrors({dispatch,errors}),createOrder:async()=>await createOrder({persistKey,dispatch,config,state,orderMetadata:metadata,orderAttributes:attributes}),addToCart:values=>defaultOrderContext.addToCart(Object.assign(Object.assign({},values),{persistKey,dispatch,state,config,errors:state.errors,orderMetadata:metadata||{},orderAttributes:attributes,setLocalOrder})),saveAddressToCustomerAddressBook:args=>defaultOrderContext.saveAddressToCustomerAddressBook(Object.assign(Object.assign({},args),{dispatch})),setGiftCardOrCouponCode:({code,codeType})=>defaultOrderContext.setGiftCardOrCouponCode({code,codeType,dispatch,order:state.order,config,include:state.include}),removeGiftCardOrCouponCode:({codeType})=>defaultOrderContext.removeGiftCardOrCouponCode({codeType,dispatch,order:state.order,config,include:state.include}),addResourceToInclude:args=>defaultOrderContext.addResourceToInclude(Object.assign(Object.assign({},args),{dispatch,resourcesIncluded:state.include,resourceIncludedLoaded:state.includeLoaded})),updateOrder:async args=>await defaultOrderContext.updateOrder(Object.assign(Object.assign({},args),{dispatch,config,include:state.include,state}))}),[state]);return _jsx(OrderContext.Provider,Object.assign({value:orderValue},{children}))};OrderContainer.propTypes=propTypes,OrderContainer.defaultProps=defaultProps,OrderContainer.displayName=displayName;export default OrderContainer;
|
|
1
|
+
import{jsx as _jsx}from"react/jsx-runtime";import{useEffect,useReducer,useContext,useMemo}from"react";import orderReducer,{createOrder,getApiOrder,setOrderErrors,setOrder,orderInitialState}from"../reducers/OrderReducer";import CommerceLayerContext from"../context/CommerceLayerContext";import OrderContext,{defaultOrderContext}from"../context/OrderContext";import{unsetOrderState}from"../reducers/OrderReducer";import components from"../config/components";import OrderStorageContext from"../context/OrderStorageContext";const propTypes=components.OrderContainer.propTypes,defaultProps=components.OrderContainer.defaultProps,displayName=components.OrderContainer.displayName,OrderContainer=props=>{const{orderId,children,metadata,attributes}=props,[state,dispatch]=useReducer(orderReducer,orderInitialState),config=useContext(CommerceLayerContext),{persistKey,clearWhenPlaced,getLocalOrder,setLocalOrder,deleteLocalOrder}=useContext(OrderStorageContext);useEffect(()=>{var _a;const startRequest=Object.keys((state==null?void 0:state.includeLoaded)||{}).filter(key=>{var _a2;return((_a2=state==null?void 0:state.includeLoaded)===null||_a2===void 0?void 0:_a2[key])===!0});if(config.accessToken){const localOrder=persistKey?getLocalOrder(persistKey):orderId;localOrder&&(dispatch({type:"setOrderId",payload:{orderId:localOrder}}),!state.order&&startRequest.length===((_a=state.include)===null||_a===void 0?void 0:_a.length)&&getApiOrder({id:localOrder,dispatch,config,persistKey,clearWhenPlaced:!!(persistKey&&clearWhenPlaced),deleteLocalOrder,state}))}return()=>unsetOrderState(dispatch)},[config.accessToken,orderId,state.includeLoaded,state.include]);const orderValue=useMemo(()=>Object.assign(Object.assign({},state),{setOrder:order=>setOrder(order,dispatch),getOrder:id=>getApiOrder({id,dispatch,config,state}),setOrderErrors:errors=>setOrderErrors({dispatch,errors}),createOrder:async()=>await createOrder({persistKey,dispatch,config,state,orderMetadata:metadata,orderAttributes:attributes}),addToCart:values=>defaultOrderContext.addToCart(Object.assign(Object.assign({},values),{persistKey,dispatch,state,config,errors:state.errors,orderMetadata:metadata||{},orderAttributes:attributes,setLocalOrder})),saveAddressToCustomerAddressBook:args=>defaultOrderContext.saveAddressToCustomerAddressBook(Object.assign(Object.assign({},args),{dispatch})),setGiftCardOrCouponCode:({code,codeType})=>defaultOrderContext.setGiftCardOrCouponCode({code,codeType,dispatch,order:state.order,config,include:state.include,state}),removeGiftCardOrCouponCode:({codeType})=>defaultOrderContext.removeGiftCardOrCouponCode({codeType,dispatch,order:state.order,config,include:state.include,state}),addResourceToInclude:args=>defaultOrderContext.addResourceToInclude(Object.assign(Object.assign({},args),{dispatch,resourcesIncluded:state.include,resourceIncludedLoaded:state.includeLoaded})),updateOrder:async args=>await defaultOrderContext.updateOrder(Object.assign(Object.assign({},args),{dispatch,config,include:state.include,state}))}),[state]);return _jsx(OrderContext.Provider,Object.assign({value:orderValue},{children}))};OrderContainer.propTypes=propTypes,OrderContainer.defaultProps=defaultProps,OrderContainer.displayName=displayName;export default OrderContainer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{jsx as _jsx}from"react/jsx-runtime";import ShipmentContext,{defaultShipmentContext}from"../context/ShipmentContext";import{useContext,useEffect,useReducer}from"react";import shipmentReducer,{shipmentInitialState,setShipmentErrors,getShipments,setShippingMethod}from"../reducers/ShipmentReducer";import OrderContext from"../context/OrderContext";import CommerceLayerContext from"../context/CommerceLayerContext";import components from"../config/components";import{isEmpty}from"lodash";const propTypes=components.ShipmentsContainer.propTypes,displayName=components.ShipmentsContainer.displayName,ShipmentsContainer=props=>{const{children}=props,[state,dispatch]=useReducer(shipmentReducer,shipmentInitialState),{order,getOrder,include,addResourceToInclude,includeLoaded}=useContext(OrderContext),config=useContext(CommerceLayerContext);useEffect(()=>{(include==null?void 0:include.includes("shipments.available_shipping_methods"))?(includeLoaded==null?void 0:includeLoaded["shipments.available_shipping_methods"])||addResourceToInclude({newResourceLoaded:{"shipments.available_shipping_methods":!0,"shipments.shipment_line_items.line_item":!0,"shipments.shipping_method":!0,"shipments.stock_transfers":!0,"shipments.stock_location":!0}}):addResourceToInclude({newResource:["shipments.available_shipping_methods","shipments.shipment_line_items.line_item","shipments.shipping_method","shipments.stock_transfers","shipments.stock_location"]}),order&&!isEmpty(config)&&order.shipments&&getShipments({order,dispatch,config})},[order,include,includeLoaded]),useEffect(()=>(order&&(order.shipments&&order.shipments.length>0&&order.shipments.map(shipment=>shipment.available_shipping_methods&&shipment.available_shipping_methods.length>0).includes(!1)&&setShipmentErrors([...state.errors||[],{code:"NO_SHIPPING_METHODS",message:"No shipping methods",resource:"shipments"}],dispatch),order.line_items&&order.line_items.length>0&&order.line_items.filter(({item_type})=>item_type==="skus").map(lineItem=>{var _a,_b,_c,_d,_e;return((_b=(_a=lineItem.item)===null||_a===void 0?void 0:_a.inventory)===null||_b===void 0?void 0:_b.quantity)>=(lineItem==null?void 0:lineItem.quantity)?((_c=lineItem.item)===null||_c===void 0?void 0:_c.do_not_ship)||((_e=(_d=lineItem.item)===null||_d===void 0?void 0:_d.inventory)===null||_e===void 0?void 0:_e.available):!1}).includes(!1)&&setShipmentErrors([...state.errors||[],{code:"OUT_OF_STOCK",message:"No stock available",resource:"line_items"}],dispatch)),()=>{setShipmentErrors([],dispatch)}),[order]);const contextValue=Object.assign(Object.assign({},state),{setShipmentErrors:errors=>defaultShipmentContext.setShipmentErrors(errors,dispatch),setShippingMethod:async(shipmentId,shippingMethodId)=>await setShippingMethod({shippingMethodId,shipmentId,config,getOrder,order})});return _jsx(ShipmentContext.Provider,Object.assign({value:contextValue},{children}))};ShipmentsContainer.propTypes=propTypes,ShipmentsContainer.displayName=displayName;export default ShipmentsContainer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as _jsx}from"react/jsx-runtime";import customMessages from"../../utils/customMessages";const getAllErrors=params=>{const{allErrors,messages,field,props,lineItem,resource,returnHtml=!0}=params;return allErrors.map((v,k)=>{const objMsg=customMessages(messages,v)
|
|
1
|
+
import{jsx as _jsx}from"react/jsx-runtime";import customMessages from"../../utils/customMessages";const getAllErrors=params=>{const{allErrors,messages,field,props,lineItem,resource,returnHtml=!0}=params;return allErrors.map((v,k)=>{var _a;const objMsg=customMessages(messages,v);let text=(v==null?void 0:v.title)&&!((_a=v.detail)===null||_a===void 0?void 0:_a.includes(v.title))?`${v.title} - ${v.detail}`:`${v.detail}`;if((objMsg==null?void 0:objMsg.message)&&(text=objMsg==null?void 0:objMsg.message),field){if(v.resource==="line_items"&&lineItem&&v.id===lineItem.id)return returnHtml?_jsx("span",Object.assign({},props,{children:text}),k):text;if(field===v.field&&resource===v.resource)return returnHtml?_jsx("span",Object.assign({},props,{children:text}),k):text}if(resource===v.resource&&!field)return returnHtml?_jsx("span",Object.assign({},props,{children:text}),k):text})};export default getAllErrors;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import{Order}from'@commercelayer/sdk';import{AddToCart,OrderState,CreateOrder,SetGiftCardOrCouponCode,RemoveGiftCardOrCouponCode,SaveAddressToCustomerAddressBook,addResourceToInclude,updateOrder,getOrderContext}from'../reducers/OrderReducer';declare type DefaultContext={createOrder:CreateOrder;addToCart:AddToCart;setOrderErrors:(errors:
|
|
2
|
+
import{Order}from'@commercelayer/sdk';import{AddToCart,OrderState,CreateOrder,SetGiftCardOrCouponCode,RemoveGiftCardOrCouponCode,SaveAddressToCustomerAddressBook,addResourceToInclude,updateOrder,getOrderContext}from'../reducers/OrderReducer';import{BaseError}from'../typings/errors';declare type DefaultContext={createOrder:CreateOrder;addToCart:AddToCart;setOrderErrors:(errors:BaseError[])=>void;setGiftCardOrCouponCode:SetGiftCardOrCouponCode;removeGiftCardOrCouponCode:RemoveGiftCardOrCouponCode;saveAddressToCustomerAddressBook:SaveAddressToCustomerAddressBook;addResourceToInclude:typeof addResourceToInclude;getOrder:getOrderContext;updateOrder:typeof updateOrder;setOrder:(order:Order)=>void;}&OrderState;export declare const defaultOrderContext:{addToCart:AddToCart;createOrder:CreateOrder;setOrderErrors:()=>void;setOrder:()=>void;setGiftCardOrCouponCode:SetGiftCardOrCouponCode;removeGiftCardOrCouponCode:RemoveGiftCardOrCouponCode;saveAddressToCustomerAddressBook:SaveAddressToCustomerAddressBook;addResourceToInclude:typeof addResourceToInclude;getOrder:()=>Promise<void>;updateOrder:typeof updateOrder;};declare const OrderContext:import("react").Context<DefaultContext>;export default OrderContext;
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import{Dispatch}from'react';import{SetLocalOrder,DeleteLocalOrder}from'../utils/localStorage';import{CommerceLayerConfig}from'../context/CommerceLayerContext';import{ItemOption,CustomLineItem}from'./ItemReducer';import{BaseMetadataObject}from'../typings/index';import{BaseError}from'../typings/errors';import{AddressResource}from'./AddressReducer';import{Order,OrderUpdate}from'@commercelayer/sdk';export declare type GetOrderParams=Partial<{clearWhenPlaced:boolean;config:CommerceLayerConfig;deleteLocalOrder:DeleteLocalOrder;dispatch:Dispatch<OrderActions>;id:string;persistKey:string;state:OrderState;}>;export interface GetOrder{(params:GetOrderParams):Promise<void|Order>;}declare type CreateOrderParams=Pick<AddToCartParams,'config'|'dispatch'|'persistKey'|'state'|'orderMetadata'|'orderAttributes'|'setLocalOrder'>;export interface CreateOrder{(params?:CreateOrderParams):Promise<string>;}export declare type AddToCartParams=Partial<{bundleCode:string;skuCode:string;persistKey:string;config:CommerceLayerConfig;dispatch:Dispatch<OrderActions>;state:Partial<OrderState>;skuId:string;quantity:number;option:ItemOption;lineItem:CustomLineItem;orderMetadata:BaseMetadataObject;orderAttributes:Record<string,any>;errors:BaseError[];setLocalOrder:SetLocalOrder;}>;export interface AddToCartImportParams extends Omit<AddToCartParams,'skuCode'|'skuId'|'quantity'|'option'|'lineItem'>{lineItems:CustomLineItem[];}export declare type AddToCartReturn=Promise<{success:boolean;}>;export interface AddToCart{(params:AddToCartParams):AddToCartReturn;}export interface AddToCartImport{(params:AddToCartImportParams):AddToCartReturn;}export interface UnsetOrderState{(dispatch:Dispatch<OrderActions>):void;}export declare type ResourceIncluded='billing_address'|'shipping_address'|'line_items.line_item_options.sku_option'|'line_items.item'|'available_customer_payment_sources.payment_source'|'shipments.available_shipping_methods'|'shipments.stock_transfers'|'shipments.shipment_line_items.line_item'|'shipments.shipping_method'|'shipments.stock_location'|'payment_source'|'available_payment_methods'|'payment_method';declare type ResourceIncludedLoaded=Partial<Record<ResourceIncluded,boolean>>;export interface OrderPayload{loading?:boolean;orderId?:string;order?:Order;errors?:BaseError[];include?:ResourceIncluded[];includeLoaded?:ResourceIncludedLoaded;}export declare type AddToCartValues=Pick<AddToCartParams,'bundleCode'|'lineItem'|'quantity'|'skuCode'|'skuId'|'option'>;export declare type AddToCartImportValues=Pick<AddToCartImportParams,'lineItems'>;export declare type getOrderContext=(id:string)=>Promise<void|Order>;export declare type OrderState=Partial<OrderPayload>;export interface OrderActions{type:OrderActionType;payload:OrderPayload;}export declare type OrderActionType='setLoading'|'setOrderId'|'setOrder'|'setSingleQuantity'|'setCurrentSkuCodes'|'setCurrentSkuPrices'|'setCurrentItem'|'setErrors'|'setSaveAddressToCustomerAddressBook'|'setGiftCardOrCouponCode'|'setIncludesResource';export declare const createOrder:CreateOrder;export declare const getApiOrder:GetOrder;export declare type UpdateOrderArgs={id:string;attributes:Omit<OrderUpdate,'id'>;dispatch?:Dispatch<OrderActions>;include?:string[];config?:CommerceLayerConfig;state?:OrderState;};export declare function updateOrder({id,attributes,dispatch,config,include,state,}:UpdateOrderArgs):Promise<
|
|
1
|
+
import{Dispatch}from'react';import{SetLocalOrder,DeleteLocalOrder}from'../utils/localStorage';import{CommerceLayerConfig}from'../context/CommerceLayerContext';import{ItemOption,CustomLineItem}from'./ItemReducer';import{BaseMetadataObject}from'../typings/index';import{BaseError}from'../typings/errors';import{AddressResource}from'./AddressReducer';import{Order,OrderUpdate}from'@commercelayer/sdk';export declare type GetOrderParams=Partial<{clearWhenPlaced:boolean;config:CommerceLayerConfig;deleteLocalOrder:DeleteLocalOrder;dispatch:Dispatch<OrderActions>;id:string;persistKey:string;state:OrderState;}>;export interface GetOrder{(params:GetOrderParams):Promise<void|Order>;}declare type CreateOrderParams=Pick<AddToCartParams,'config'|'dispatch'|'persistKey'|'state'|'orderMetadata'|'orderAttributes'|'setLocalOrder'>;export interface CreateOrder{(params?:CreateOrderParams):Promise<string>;}export declare type AddToCartParams=Partial<{bundleCode:string;skuCode:string;persistKey:string;config:CommerceLayerConfig;dispatch:Dispatch<OrderActions>;state:Partial<OrderState>;skuId:string;quantity:number;option:ItemOption;lineItem:CustomLineItem;orderMetadata:BaseMetadataObject;orderAttributes:Record<string,any>;errors:BaseError[];setLocalOrder:SetLocalOrder;}>;export interface AddToCartImportParams extends Omit<AddToCartParams,'skuCode'|'skuId'|'quantity'|'option'|'lineItem'>{lineItems:CustomLineItem[];}export declare type AddToCartReturn=Promise<{success:boolean;}>;export interface AddToCart{(params:AddToCartParams):AddToCartReturn;}export interface AddToCartImport{(params:AddToCartImportParams):AddToCartReturn;}export interface UnsetOrderState{(dispatch:Dispatch<OrderActions>):void;}export declare type ResourceIncluded='billing_address'|'shipping_address'|'line_items.line_item_options.sku_option'|'line_items.item'|'available_customer_payment_sources.payment_source'|'shipments.available_shipping_methods'|'shipments.stock_transfers'|'shipments.shipment_line_items.line_item'|'shipments.shipping_method'|'shipments.stock_location'|'payment_source'|'available_payment_methods'|'payment_method';declare type ResourceIncludedLoaded=Partial<Record<ResourceIncluded,boolean>>;export interface OrderPayload{loading?:boolean;orderId?:string;order?:Order;errors?:BaseError[];include?:ResourceIncluded[];includeLoaded?:ResourceIncludedLoaded;}export declare type AddToCartValues=Pick<AddToCartParams,'bundleCode'|'lineItem'|'quantity'|'skuCode'|'skuId'|'option'>;export declare type AddToCartImportValues=Pick<AddToCartImportParams,'lineItems'>;export declare type getOrderContext=(id:string)=>Promise<void|Order>;export declare type OrderState=Partial<OrderPayload>;export interface OrderActions{type:OrderActionType;payload:OrderPayload;}export declare type OrderActionType='setLoading'|'setOrderId'|'setOrder'|'setSingleQuantity'|'setCurrentSkuCodes'|'setCurrentSkuPrices'|'setCurrentItem'|'setErrors'|'setSaveAddressToCustomerAddressBook'|'setGiftCardOrCouponCode'|'setIncludesResource';export declare const createOrder:CreateOrder;export declare const getApiOrder:GetOrder;export declare type UpdateOrderArgs={id:string;attributes:Omit<OrderUpdate,'id'>;dispatch?:Dispatch<OrderActions>;include?:string[];config?:CommerceLayerConfig;state?:OrderState;};export declare function updateOrder({id,attributes,dispatch,config,include,state,}:UpdateOrderArgs):Promise<{success:boolean;error?:undefined;}|{success:boolean;error:unknown;}>;export declare const setOrder:(order:Order,dispatch?:Dispatch<OrderActions>|undefined)=>void;export declare type AddResourceToInclude={resourcesIncluded?:ResourceIncluded[];dispatch?:Dispatch<OrderActions>;newResource?:ResourceIncluded|ResourceIncluded[];resourceIncludedLoaded?:ResourceIncludedLoaded;newResourceLoaded?:ResourceIncludedLoaded;};export declare function addResourceToInclude({resourcesIncluded,dispatch,newResource,newResourceLoaded,resourceIncludedLoaded,}:AddResourceToInclude):void;export declare const addToCart:AddToCart;export declare const unsetOrderState:UnsetOrderState;declare type OrderErrors={dispatch?:Dispatch<OrderActions>;errors:BaseError[];};export declare function setOrderErrors({dispatch,errors}:OrderErrors):{success:boolean;};export declare type SaveAddressToCustomerAddressBook=(params:{dispatch?:Dispatch<OrderActions>;type:AddressResource;value:boolean;})=>void;export declare const saveAddressToCustomerAddressBook:SaveAddressToCustomerAddressBook;export declare type SetGiftCardOrCouponCode=(args:{code:string;codeType:OrderCodeType;dispatch?:Dispatch<OrderActions>;config?:CommerceLayerConfig;order?:Order;include?:string[];state?:OrderState;})=>Promise<{success:boolean;}>;export declare const setGiftCardOrCouponCode:SetGiftCardOrCouponCode;export declare type CodeType='coupon'|'gift_card'|'gift_card_or_coupon';export declare type OrderCodeType=`${CodeType}_code`;
|
|
2
2
|
export declare type RemoveGiftCardOrCouponCode = (args: {
|
|
3
3
|
codeType: OrderCodeType;
|
|
4
4
|
dispatch?: Dispatch<OrderActions>;
|
|
5
5
|
config?: CommerceLayerConfig;
|
|
6
6
|
order?: Order;
|
|
7
7
|
include?: string[];
|
|
8
|
+
state?: OrderState;
|
|
8
9
|
}) => Promise<{
|
|
9
10
|
success: boolean;
|
|
10
11
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{setCustomerOrderParam}from"../utils/localStorage";import baseReducer from"../utils/baseReducer";import{isEmpty,size,map}from"lodash";import getSdk from"../utils/getSdk";import getErrors,{setErrors}from"../utils/getErrors";const actionType=["setLoading","setOrderId","setOrder","setSingleQuantity","setCurrentSkuCodes","setCurrentSkuPrices","setErrors","setCurrentItem","setSaveAddressToCustomerAddressBook","setIncludesResource"];export const createOrder=async params=>{if(params){const{persistKey,state,dispatch,config,orderMetadata:metadata,orderAttributes={},setLocalOrder}=params;if(state==null?void 0:state.orderId)return state.orderId;const sdk=getSdk(config);try{const o=await(sdk==null?void 0:sdk.orders.create(Object.assign({metadata},orderAttributes)));return dispatch&&dispatch({type:"setOrderId",payload:{orderId:o==null?void 0:o.id}}),persistKey&&setLocalOrder&&setLocalOrder(persistKey,o.id),o.id}catch(error){const errors=getErrors(error,"orders");console.error("Create order",errors),dispatch&&setErrors({currentErrors:state==null?void 0:state.errors,newErrors:errors,dispatch})}}return""},getApiOrder=async params=>{const{id,dispatch,config,clearWhenPlaced,persistKey,deleteLocalOrder,state}=params,sdk=getSdk(config);try{const options={};(state==null?void 0:state.include)&&state.include.length>0&&(options.include=state.include);const order=await sdk.orders.retrieve(id,options);return clearWhenPlaced&&order.status==="placed"||order.status==="approved"||order.status==="cancelled"?(persistKey&&deleteLocalOrder&&deleteLocalOrder(persistKey),dispatch&&dispatch({type:"setOrder",payload:{order:void 0,orderId:""}})):dispatch&&dispatch({type:"setOrder",payload:{order,orderId:order.id}}),order}catch(error){const errors=getErrors(error,"orders");console.error("Retrieve order",errors),dispatch&&setErrors({currentErrors:state==null?void 0:state.errors,newErrors:errors,dispatch});return}};export async function updateOrder({id,attributes,dispatch,config,include,state}){const sdk=getSdk(config);try{const resource=Object.assign(Object.assign({},attributes),{id});await sdk.orders.update(resource,{include});const order=await getApiOrder({id,config,dispatch,state});dispatch&&order&&dispatch({type:"setOrder",payload:{order}})}catch(error){const errors=getErrors(error,"orders");dispatch&&(setOrderErrors({errors,dispatch}),dispatch({type:"setErrors",payload:{errors}}))}}export const setOrder=(order,dispatch)=>{dispatch&&dispatch({type:"setOrder",payload:{order}})};export function addResourceToInclude({resourcesIncluded=[],dispatch,newResource,newResourceLoaded,resourceIncludedLoaded}){const payload={include:void 0,includeLoaded:void 0};newResource?payload.include=[...resourcesIncluded,...typeof newResource=="string"?[newResource]:newResource]:delete payload.include,payload.includeLoaded=Object.assign(Object.assign({},resourceIncludedLoaded),newResourceLoaded),dispatch&&dispatch({type:"setIncludesResource",payload})}export const addToCart=async params=>{const{skuCode,bundleCode,skuId,quantity,option,config,dispatch,lineItem,state,errors=[]}=params;try{const sdk=getSdk(config),id=await createOrder(params);if(id){const order=sdk.orders.relationship(id),name=lineItem==null?void 0:lineItem.name,imageUrl=lineItem==null?void 0:lineItem.imageUrl,attrs={order,sku_code:skuCode,name,image_url:imageUrl,quantity:quantity||1,_update_quantity:!0,bundle_code:bundleCode};skuId&&(attrs.item=sdk.skus.relationship(skuId));const newLineItem=await sdk.line_items.create(attrs);if(isEmpty(option))await getApiOrder(Object.assign(Object.assign({id},params),{state}));else{let c=0;map(option,async opt=>{const{options,skuOptionId}=opt,skuOption=sdk.sku_options.relationship(skuOptionId),lineItemRel=sdk.line_items.relationship(newLineItem.id),lineItemOptionsAttributes={quantity:1,options,sku_option:skuOption,line_item:lineItemRel};await sdk.line_item_options.create(lineItemOptionsAttributes),c+=1,c===size(option)&&await getApiOrder(Object.assign({id},params))})}return!isEmpty(errors)&&dispatch&&dispatch({type:"setErrors",payload:{errors:[]}}),{success:!0}}return{success:!1}}catch(error){const errors2=getErrors(error,"orders");return console.error("Add to cart",errors2),dispatch&&setErrors({currentErrors:state==null?void 0:state.errors,newErrors:errors2,dispatch}),{success:!1}}},unsetOrderState=dispatch=>{dispatch({type:"setOrderId",payload:{orderId:""}}),dispatch({type:"setOrder",payload:{order:void 0}})};export function setOrderErrors({dispatch,errors}){return dispatch&&dispatch({type:"setErrors",payload:{errors}}),{success:!1}}export const saveAddressToCustomerAddressBook=({type,value,dispatch})=>{const k=`_save_${type}_to_customer_address_book`,v=`${value}`;setCustomerOrderParam(k,v),dispatch&&dispatch({type:"setSaveAddressToCustomerAddressBook",payload:{[k]:v}})},setGiftCardOrCouponCode=async({code,codeType,dispatch,config,order,include})=>{try{if(config&&order&&code&&dispatch){const
|
|
1
|
+
import{setCustomerOrderParam}from"../utils/localStorage";import baseReducer from"../utils/baseReducer";import{isEmpty,size,map}from"lodash";import getSdk from"../utils/getSdk";import getErrors,{setErrors}from"../utils/getErrors";const actionType=["setLoading","setOrderId","setOrder","setSingleQuantity","setCurrentSkuCodes","setCurrentSkuPrices","setErrors","setCurrentItem","setSaveAddressToCustomerAddressBook","setIncludesResource"];export const createOrder=async params=>{if(params){const{persistKey,state,dispatch,config,orderMetadata:metadata,orderAttributes={},setLocalOrder}=params;if(state==null?void 0:state.orderId)return state.orderId;const sdk=getSdk(config);try{const o=await(sdk==null?void 0:sdk.orders.create(Object.assign({metadata},orderAttributes)));return dispatch&&dispatch({type:"setOrderId",payload:{orderId:o==null?void 0:o.id}}),persistKey&&setLocalOrder&&setLocalOrder(persistKey,o.id),o.id}catch(error){const errors=getErrors(error,"orders");console.error("Create order",errors),dispatch&&setErrors({currentErrors:state==null?void 0:state.errors,newErrors:errors,dispatch})}}return""},getApiOrder=async params=>{const{id,dispatch,config,clearWhenPlaced,persistKey,deleteLocalOrder,state}=params,sdk=getSdk(config);try{const options={};(state==null?void 0:state.include)&&state.include.length>0&&(options.include=state.include);const order=await sdk.orders.retrieve(id,options);return clearWhenPlaced&&order.status==="placed"||order.status==="approved"||order.status==="cancelled"?(persistKey&&deleteLocalOrder&&deleteLocalOrder(persistKey),dispatch&&dispatch({type:"setOrder",payload:{order:void 0,orderId:""}})):dispatch&&dispatch({type:"setOrder",payload:{order,orderId:order.id}}),order}catch(error){const errors=getErrors(error,"orders");console.error("Retrieve order",errors),dispatch&&setErrors({currentErrors:state==null?void 0:state.errors,newErrors:errors,dispatch});return}};export async function updateOrder({id,attributes,dispatch,config,include,state}){const sdk=getSdk(config);try{const resource=Object.assign(Object.assign({},attributes),{id});await sdk.orders.update(resource,{include});const order=await getApiOrder({id,config,dispatch,state});return dispatch&&order&&dispatch({type:"setOrder",payload:{order}}),{success:!0}}catch(error){const errors=getErrors(error,"orders");return dispatch&&(setOrderErrors({errors,dispatch}),dispatch({type:"setErrors",payload:{errors}})),{success:!1,error}}}export const setOrder=(order,dispatch)=>{dispatch&&dispatch({type:"setOrder",payload:{order}})};export function addResourceToInclude({resourcesIncluded=[],dispatch,newResource,newResourceLoaded,resourceIncludedLoaded}){const payload={include:void 0,includeLoaded:void 0};newResource?payload.include=[...resourcesIncluded,...typeof newResource=="string"?[newResource]:newResource]:delete payload.include,payload.includeLoaded=Object.assign(Object.assign({},resourceIncludedLoaded),newResourceLoaded),dispatch&&dispatch({type:"setIncludesResource",payload})}export const addToCart=async params=>{const{skuCode,bundleCode,skuId,quantity,option,config,dispatch,lineItem,state,errors=[]}=params;try{const sdk=getSdk(config),id=await createOrder(params);if(id){const order=sdk.orders.relationship(id),name=lineItem==null?void 0:lineItem.name,imageUrl=lineItem==null?void 0:lineItem.imageUrl,attrs={order,sku_code:skuCode,name,image_url:imageUrl,quantity:quantity||1,_update_quantity:!0,bundle_code:bundleCode};skuId&&(attrs.item=sdk.skus.relationship(skuId));const newLineItem=await sdk.line_items.create(attrs);if(isEmpty(option))await getApiOrder(Object.assign(Object.assign({id},params),{state}));else{let c=0;map(option,async opt=>{const{options,skuOptionId}=opt,skuOption=sdk.sku_options.relationship(skuOptionId),lineItemRel=sdk.line_items.relationship(newLineItem.id),lineItemOptionsAttributes={quantity:1,options,sku_option:skuOption,line_item:lineItemRel};await sdk.line_item_options.create(lineItemOptionsAttributes),c+=1,c===size(option)&&await getApiOrder(Object.assign({id},params))})}return!isEmpty(errors)&&dispatch&&dispatch({type:"setErrors",payload:{errors:[]}}),{success:!0}}return{success:!1}}catch(error){const errors2=getErrors(error,"orders");return console.error("Add to cart",errors2),dispatch&&setErrors({currentErrors:state==null?void 0:state.errors,newErrors:errors2,dispatch}),{success:!1}}},unsetOrderState=dispatch=>{dispatch({type:"setOrderId",payload:{orderId:""}}),dispatch({type:"setOrder",payload:{order:void 0}})};export function setOrderErrors({dispatch,errors=[]}){return dispatch&&dispatch({type:"setErrors",payload:{errors}}),{success:!1}}export const saveAddressToCustomerAddressBook=({type,value,dispatch})=>{const k=`_save_${type}_to_customer_address_book`,v=`${value}`;setCustomerOrderParam(k,v),dispatch&&dispatch({type:"setSaveAddressToCustomerAddressBook",payload:{[k]:v}})},setGiftCardOrCouponCode=async({code,codeType,dispatch,config,order,include,state})=>{try{if(config&&order&&code&&dispatch){const attributes={[codeType]:code},{success,error}=await updateOrder({id:order.id,attributes,config,include,dispatch,state});if(!success)throw error;return dispatch({type:"setErrors",payload:{errors:[]}}),{success}}return{success:!1}}catch(error){const errors=getErrors(error,"orders",codeType);return dispatch&&setOrderErrors({errors,dispatch}),{success:!1}}},removeGiftCardOrCouponCode=async({codeType,dispatch,config,order,include,state})=>{try{if(config&&order&&dispatch){const attributes={[codeType]:""};return await updateOrder({id:order.id,attributes,config,include,dispatch,state}),dispatch({type:"setErrors",payload:{errors:[]}}),{success:!0}}return{success:!1}}catch(error){const errors=getErrors(error,"orders",codeType);return console.error("Remove gift card o coupon code",errors),dispatch&&setOrderErrors({errors,dispatch}),{success:!1}}},orderInitialState={loading:!1,orderId:"",order:void 0,errors:[],include:[]};const orderReducer=(state,reducer)=>baseReducer(state,reducer,actionType);export default orderReducer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Dispatch}from'react';import{BaseError}from'../typings/errors';import{CommerceLayerConfig}from'../context/CommerceLayerContext';import{Order}from'@commercelayer/sdk';import{PaymentResource}from'./PaymentMethodReducer';import{PaymentSourceType}from'./PaymentMethodReducer';export declare type PlaceOrderActionType='setErrors'|'setPlaceOrderPermitted';export declare type PlaceOrderOptions={paypalPayerId?:string;adyen?:{MD:string;PaRes:string;};checkoutCom?:{session_id:string;};};export interface PlaceOrderActionPayload{errors:BaseError[];isPermitted:boolean;paymentType:PaymentResource;paymentSecret:string;paymentId:string;paymentSource:PaymentSourceType;options?:PlaceOrderOptions;}export declare type PlaceOrderState=Partial<PlaceOrderActionPayload>;export interface PlaceOrderAction{type:PlaceOrderActionType;payload:Partial<PlaceOrderActionPayload>;}export declare const placeOrderInitialState:PlaceOrderState;export interface SetPlaceOrderErrors{<V extends BaseError[]>(errors:V,dispatch?:Dispatch<PlaceOrderAction>):void;}export declare const setPlaceOrderErrors:SetPlaceOrderErrors;declare type PlaceOrderPermitted=(args:{config?:CommerceLayerConfig;dispatch:Dispatch<PlaceOrderAction>;order?:Order;options?:PlaceOrderOptions;})=>void;export declare const placeOrderPermitted:PlaceOrderPermitted;export declare type SetPlaceOrder=(args:{config?:CommerceLayerConfig;order?:Order;state?:PlaceOrderState;setOrderErrors?:(
|
|
1
|
+
import{Dispatch}from'react';import{BaseError}from'../typings/errors';import{CommerceLayerConfig}from'../context/CommerceLayerContext';import{Order}from'@commercelayer/sdk';import{PaymentResource}from'./PaymentMethodReducer';import{PaymentSourceType}from'./PaymentMethodReducer';export declare type PlaceOrderActionType='setErrors'|'setPlaceOrderPermitted';export declare type PlaceOrderOptions={paypalPayerId?:string;adyen?:{MD:string;PaRes:string;};checkoutCom?:{session_id:string;};};export interface PlaceOrderActionPayload{errors:BaseError[];isPermitted:boolean;paymentType:PaymentResource;paymentSecret:string;paymentId:string;paymentSource:PaymentSourceType;options?:PlaceOrderOptions;}export declare type PlaceOrderState=Partial<PlaceOrderActionPayload>;export interface PlaceOrderAction{type:PlaceOrderActionType;payload:Partial<PlaceOrderActionPayload>;}export declare const placeOrderInitialState:PlaceOrderState;export interface SetPlaceOrderErrors{<V extends BaseError[]>(errors:V,dispatch?:Dispatch<PlaceOrderAction>):void;}export declare const setPlaceOrderErrors:SetPlaceOrderErrors;declare type PlaceOrderPermitted=(args:{config?:CommerceLayerConfig;dispatch:Dispatch<PlaceOrderAction>;order?:Order;options?:PlaceOrderOptions;})=>void;export declare const placeOrderPermitted:PlaceOrderPermitted;export declare type SetPlaceOrder=(args:{config?:CommerceLayerConfig;order?:Order;state?:PlaceOrderState;setOrderErrors?:(errors:BaseError[])=>void;paymentSource?:PaymentSourceType&{approval_url?:string;};include?:string[];setOrder?:(order:Order)=>void;})=>Promise<{placed:boolean;}>;export declare const setPlaceOrder:SetPlaceOrder;declare const placeOrderReducer:(state:PlaceOrderState,reducer:PlaceOrderAction)=>PlaceOrderState;export default placeOrderReducer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import baseReducer from"../utils/baseReducer";import isEmpty from"lodash/isEmpty";import{shipmentsFilled}from"../utils/shipments";import{saveBillingAddress,saveShippingAddress,saveToWallet}from"../utils/customerOrderOptions";import getSdk from"../utils/getSdk";import getErrors from"../utils/getErrors";export const placeOrderInitialState={errors:[],isPermitted:!1},setPlaceOrderErrors=(errors,dispatch)=>{dispatch&&dispatch({type:"setErrors",payload:{errors}})},placeOrderPermitted=async({config,order,dispatch,options})=>{var _a;if(order&&config){let isPermitted=!0;order.privacy_url&&order.terms_url&&(isPermitted=localStorage.getItem("privacy-terms")==="true");const billingAddress=order.billing_address;isEmpty(billingAddress)&&(isPermitted=!1);const shippingAddress=order.shipping_address;isEmpty(shippingAddress)&&(isPermitted=!1);const shipments=order.shipments,shipment=shipments&&shipmentsFilled(shipments);!isEmpty(shipments)&&!shipment&&(isPermitted=!1);const paymentMethod=order.payment_method,paymentSource=order.payment_source;(paymentSource==null?void 0:paymentSource.mismatched_amounts)&&(isPermitted=!1),order.total_amount_with_taxes_cents!==0&&isEmpty(paymentMethod==null?void 0:paymentMethod.id)&&(isPermitted=!1),dispatch({type:"setPlaceOrderPermitted",payload:{isPermitted,paymentType:paymentMethod==null?void 0:paymentMethod.payment_source_type,paymentSecret:paymentSource==null?void 0:paymentSource.client_secret,paymentId:(_a=paymentSource==null?void 0:paymentSource.options)===null||_a===void 0?void 0:_a.id,paymentSource,options}})}},setPlaceOrder=async({state,order,config,setOrderErrors,paymentSource,setOrder,include})=>{var _a,_b,_c,_d;const response={placed:!1};
|
|
1
|
+
import baseReducer from"../utils/baseReducer";import isEmpty from"lodash/isEmpty";import{isDoNotShip,shipmentsFilled}from"../utils/shipments";import{saveBillingAddress,saveShippingAddress,saveToWallet}from"../utils/customerOrderOptions";import getSdk from"../utils/getSdk";import getErrors from"../utils/getErrors";export const placeOrderInitialState={errors:[],isPermitted:!1},setPlaceOrderErrors=(errors,dispatch)=>{dispatch&&dispatch({type:"setErrors",payload:{errors}})},placeOrderPermitted=async({config,order,dispatch,options})=>{var _a;if(order&&config){let isPermitted=!0;order.privacy_url&&order.terms_url&&(isPermitted=localStorage.getItem("privacy-terms")==="true");const billingAddress=order.billing_address;isEmpty(billingAddress)&&(isPermitted=!1);const shippingAddress=order.shipping_address,doNotShip=isDoNotShip(order.line_items);isEmpty(shippingAddress)&&!doNotShip&&(isPermitted=!1);const shipments=order.shipments,shipment=shipments&&shipmentsFilled(shipments);!isEmpty(shipments)&&!shipment&&(isPermitted=!1);const paymentMethod=order.payment_method,paymentSource=order.payment_source;(paymentSource==null?void 0:paymentSource.mismatched_amounts)&&(isPermitted=!1),order.total_amount_with_taxes_cents!==0&&isEmpty(paymentMethod==null?void 0:paymentMethod.id)&&(isPermitted=!1),dispatch({type:"setPlaceOrderPermitted",payload:{isPermitted,paymentType:paymentMethod==null?void 0:paymentMethod.payment_source_type,paymentSecret:paymentSource==null?void 0:paymentSource.client_secret,paymentId:(_a=paymentSource==null?void 0:paymentSource.options)===null||_a===void 0?void 0:_a.id,paymentSource,options}})}},setPlaceOrder=async({state,order,config,setOrderErrors,paymentSource,setOrder,include})=>{var _a,_b,_c,_d;const response={placed:!1};if(state&&config&&order){const sdk=getSdk(config),{options,paymentType}=state;try{if(paymentType==="paypal_payments"&&paymentSource){if(!(options==null?void 0:options.paypalPayerId)&&(paymentSource==null?void 0:paymentSource.approval_url))return window.location.href=paymentSource==null?void 0:paymentSource.approval_url,response;await sdk[paymentType].update({id:paymentSource.id,paypal_payer_id:options==null?void 0:options.paypalPayerId})}if(paymentType==="checkout_com_payments"&&paymentSource&&((_a=options==null?void 0:options.checkoutCom)===null||_a===void 0?void 0:_a.session_id)){const payment=await sdk[paymentType].update({id:paymentSource.id,_details:!0,session_id:(_b=options==null?void 0:options.checkoutCom)===null||_b===void 0?void 0:_b.session_id});if(((_c=payment==null?void 0:payment.payment_response)===null||_c===void 0?void 0:_c.status)!=="Authorized"){const[action]=((_d=payment==null?void 0:payment.payment_response)===null||_d===void 0?void 0:_d.actions)||[""];throw{errors:[{code:"PAYMENT_NOT_APPROVED_FOR_EXECUTION",message:action==null?void 0:action.response_summary,resource:"orders",field:"checkout_com_payments"}]}}}const updateAttributes={id:order.id,_place:!0};switch(saveBillingAddress()&&await sdk.orders.update({id:order.id,_save_billing_address_to_customer_address_book:!0}),saveShippingAddress()&&await sdk.orders.update({id:order.id,_save_shipping_address_to_customer_address_book:!0}),paymentType){case"braintree_payments":{saveToWallet()&&await sdk.orders.update({id:order.id,_save_payment_source_to_customer_wallet:!0});const orderUpdated=await sdk.orders.update(updateAttributes,{include});return setOrder&&setOrder(orderUpdated),setOrderErrors&&setOrderErrors([]),{placed:!0}}default:{const orderUpdated=await sdk.orders.update(updateAttributes,{include});return setOrder&&setOrder(orderUpdated),saveToWallet()&&await sdk.orders.update({id:order.id,_save_payment_source_to_customer_wallet:!0}),setOrderErrors&&setOrderErrors([]),{placed:!0}}}}catch(error){const errors=getErrors(error,"orders",paymentType);return setOrderErrors&&setOrderErrors(errors),Object.assign(Object.assign({},response),{errors})}}return response};const type=["setErrors","setPlaceOrderPermitted"],placeOrderReducer=(state,reducer)=>baseReducer(state,reducer,type);export default placeOrderReducer;
|
package/lib/utils/shipments.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Shipment}from'@commercelayer/sdk';export declare function shipmentsFilled(shipments:Shipment[]):boolean;
|
|
1
|
+
import{LineItem,Shipment}from'@commercelayer/sdk';export declare function shipmentsFilled(shipments:Shipment[]):boolean;export declare function isDoNotShip(lineItems?:LineItem[]):boolean;
|
package/lib/utils/shipments.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import compact from"lodash/compact";import isEmpty from"lodash/isEmpty";export function shipmentsFilled(shipments){const filled=compact(shipments.filter(shipment=>!isEmpty(shipment.shipping_method)));return!isEmpty(filled)}
|
|
1
|
+
import compact from"lodash/compact";import isEmpty from"lodash/isEmpty";export function shipmentsFilled(shipments){const filled=compact(shipments.filter(shipment=>!isEmpty(shipment.shipping_method)));return!isEmpty(filled)}export function isDoNotShip(lineItems){const itemDoNotShip=[],items=lineItems?lineItems.filter(({item_type})=>item_type==="skus").map(lineItem=>{var _a;return lineItem.item&&((_a=lineItem.item)===null||_a===void 0?void 0:_a.do_not_ship)&&itemDoNotShip.push(!0),lineItem}):[];return itemDoNotShip.length>0&&itemDoNotShip.length===items.length}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@commercelayer/react-components",
|
|
3
|
-
"version": "3.9.
|
|
3
|
+
"version": "3.9.5",
|
|
4
4
|
"description": "The Official Commerce Layer React Components",
|
|
5
5
|
"module": "lib/index.js",
|
|
6
6
|
"types": "lib/index.d.ts",
|
|
@@ -85,7 +85,7 @@
|
|
|
85
85
|
"@ac-dev/countries-service": "^1.2.0",
|
|
86
86
|
"@ac-dev/states-service": "^1.1.0",
|
|
87
87
|
"@adyen/adyen-web": "^5.12.0",
|
|
88
|
-
"@commercelayer/js-auth": "^3.0
|
|
88
|
+
"@commercelayer/js-auth": "^2.3.0",
|
|
89
89
|
"@commercelayer/sdk": "^3.7.0",
|
|
90
90
|
"@stripe/react-stripe-js": "^1.7.0",
|
|
91
91
|
"@stripe/stripe-js": "^1.26.0",
|