SetCartAddress
Implements SetCartAddress Unified Method.
Source
import { getNormalizers } from "@alokai/connect/integration-kit";
import { defineApi, getCartId, query } from "@vsf-enterprise/unified-api-magento";
import type { Cart, CartAddressInput } from "@vsf-enterprise/unified-api-magento/ecommerceTypes";
import { resolveRegionId } from "@vsf-enterprise/unified-api-magento";
export const setCartAddress = defineApi.setCartAddress(async (context, args) => {
const { api } = await context.getApiClient();
const cartId = getCartId(context);
const { normalizeCart, unnormalizeAddress, unnormalizeCustomerAddress } = getNormalizers(context);
/**
* `CartAddressInput` does not support titleCode (prefix) field
* {@link https://docs.alokai.com/integrations/magento/api/magento-types/CartAddressInput}
*/
args.shippingAddress.titleCode = null;
const address =
"id" in args.shippingAddress
? unnormalizeCustomerAddress(args.shippingAddress)
: unnormalizeAddress(args.shippingAddress);
const selectedRegion = await resolveRegionId(context, args.shippingAddress);
const data = await query(
api.setShippingAddressesOnCart({
cart_id: cartId,
shipping_addresses: [
{
address: {
...(address as CartAddressInput),
region: selectedRegion.code ?? undefined,
region_id: selectedRegion.id ?? undefined,
},
},
],
}),
);
return normalizeCart(data.setShippingAddressesOnCart?.cart as Cart);
});