Vue Storefront is now Alokai! Learn More
GetAvailableShippingMethods

GetAvailableShippingMethods

Implements GetAvailableShippingMethods Unified Method.

Source

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

import { defineApi, getCartId } from "@vsf-enterprise/unified-api-sapcc";

export const getAvailableShippingMethods = defineApi.getAvailableShippingMethods(
  async (context) => {
    const { api } = await context.getApiClient();
    const cartId = getCartId(context);
    const { normalizeShippingMethod } = getNormalizers(context);

    try {
      const { data } = await api.getCartDeliveryModes({ cartId });
      return {
        methods:
          data.deliveryModes
            ?.map((deliveryMode) => normalizeShippingMethod(deliveryMode))
            .filter(Boolean) ?? [],
      };
    } catch (error) {
      throw context.createHttpError({
        cause: error,
        message: "Error getting available shipping methods",
        statusCode: HttpStatusCode.INTERNAL_SERVER_ERROR,
      });
    }
  },
);