import api from '../../Api'; import { addShippingInfoAction } from '../events/actions/addShippingInfo'; import { addToCartAction } from '../events/actions/addToCart'; import { purchaseAction } from '../events/actions/purchase'; import { removeFromCartAction } from '../events/actions/removeFromCart'; import { shippingCalculationAction } from '../events/actions/shippingCalculation'; import { upsertToCartAction } from '../events/actions/upsertToCart'; import type { UpsertTrackingCartRequest } from '../types'; import type { BuyCartRequest, CartResponse, DeleteCartRequest, SelectShipimentRequest, ShipmentQuoteCartRequest, UpsertCartRequest, } from '../../Api/types'; export function listDetail() { return api.cart.listDetail().then(data => { return data; }); } export function addProduct(payload: UpsertTrackingCartRequest) { return api.cart.addProduct(payload as UpsertCartRequest).then(data => { addToCartAction(payload, data); return data; }); } export function upsertProduct(payload: UpsertTrackingCartRequest) { return api.cart .upsertProduct(payload as UpsertCartRequest) .then(data => { upsertToCartAction(payload, data); return data; }); } export function deleteProduct( payload: DeleteCartRequest, oldCartResponse: CartResponse, ) { return api.cart.deleteProduct(payload).then(data => { removeFromCartAction(payload, data, oldCartResponse); return data; }); } export function selectShipment(payload: SelectShipimentRequest) { return api.cart.selectShipment(payload).then(data => { addShippingInfoAction(data); return data; }); } export function shipmentQuote(payload: ShipmentQuoteCartRequest) { return api.cart.shipmentQuote(payload).then(data => { shippingCalculationAction(); return data; }); } export function buy( payload: BuyCartRequest, paymentMethod: string, cartResponse: CartResponse, ) { return api.cart.buy(payload).then(data => { purchaseAction(paymentMethod, cartResponse); return data; }); }