UNPKG

@shopify/hydrogen-react

Version:

React components, hooks, and utilities for creating custom Shopify storefronts

61 lines (60 loc) 1.88 kB
import { useCallback } from "react"; import { useShop } from "./ShopifyProvider.mjs"; import { SHOPIFY_STOREFRONT_ID_HEADER, SHOPIFY_STOREFRONT_Y_HEADER, SHOPIFY_STOREFRONT_S_HEADER } from "./cart-constants.mjs"; import { getTrackingValues, SHOPIFY_UNIQUE_TOKEN_HEADER, SHOPIFY_VISIT_TOKEN_HEADER } from "./tracking-utils.mjs"; function useCartFetch() { const { storefrontId, getPublicTokenHeaders, getStorefrontApiUrl, sameDomainForStorefrontApi } = useShop(); return useCallback( ({ query, variables }) => { const headers = getPublicTokenHeaders({ contentType: "json" }); if (storefrontId) { headers[SHOPIFY_STOREFRONT_ID_HEADER] = storefrontId; } if (!sameDomainForStorefrontApi) { const { uniqueToken, visitToken } = getTrackingValues(); if (uniqueToken) { headers[SHOPIFY_STOREFRONT_Y_HEADER] = uniqueToken; headers[SHOPIFY_UNIQUE_TOKEN_HEADER] = uniqueToken; } if (visitToken) { headers[SHOPIFY_STOREFRONT_S_HEADER] = visitToken; headers[SHOPIFY_VISIT_TOKEN_HEADER] = visitToken; } } return fetch(getStorefrontApiUrl(), { method: "POST", headers, body: JSON.stringify({ query: query.toString(), variables }) }).then( (res) => res.json() ).catch((error) => { return { data: void 0, // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call errors: error == null ? void 0 : error.toString() }; }); }, [ getPublicTokenHeaders, storefrontId, getStorefrontApiUrl, sameDomainForStorefrontApi ] ); } export { useCartFetch }; //# sourceMappingURL=cart-hooks.mjs.map