Vue Storefront is now Alokai! Learn More
SetCartAddress

SetCartAddress

Implements SetCartAddress Unified Method.

Source

import "./extended";
import { getNormalizers } from "@alokai/connect/integration-kit";
import { z } from "zod";

import { defineApi, getNormalizedCart, getShipmentId } from "@vsf-enterprise/unified-api-sfcc";

const addressSchema = z.object({
  address1: z.string().min(1),
  city: z.string().min(1),
  country: z.string().min(1),
  firstName: z.string().min(1),
  lastName: z.string().min(1),
  phoneNumber: z.string().min(1),
  postalCode: z.string().min(1),
  state: z.string().min(1),
});

const argsSchema = z.object({
  shippingAddress: addressSchema,
});

export const setCartAddress = defineApi.setCartAddress(async (context, args) => {
  argsSchema.parse(args);

  const { api } = await context.getApiClient();
  const { shippingAddress } = args;
  const { unnormalizeAddress } = getNormalizers(context);
  const shipmentId = getShipmentId(context);

  const cart = await api.updateShipment({
    shipmentId,
    shippingAddress: unnormalizeAddress(shippingAddress),
  });

  return await getNormalizedCart(context, cart);
});