Vue Storefront is now Alokai! Learn More
GetAvailableShippingMethods

GetAvailableShippingMethods

Implements GetAvailableShippingMethods Unified Method.

Source

import { defineApi, getShipmentId } from "@vsf-enterprise/unified-api-sfcc";
import { type SfShippingMethod, getNormalizers } from "@vue-storefront/unified-data-model";
import "./extended.d";

export const getAvailableShippingMethods = defineApi.getAvailableShippingMethods(
  async (context) => {
    const shipmentId = getShipmentId(context);
    const { normalizeShippingMethod } = getNormalizers(context);

    const { applicableShippingMethods } = await context.api.getApplicableShippingMethods({
      shipmentId,
    });

    let methods: SfShippingMethod[] = [];

    if (applicableShippingMethods) {
      methods = applicableShippingMethods
        .map((shippingMethod) => normalizeShippingMethod(shippingMethod))
        .filter(Boolean);
    }

    return { methods };
  },
);