UNPKG

@shopify/hydrogen-react

Version:

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

49 lines (48 loc) 1.57 kB
import { useCallback } from "react"; import { useShop } from "./ShopifyProvider.mjs"; import { STOREFRONT_API_PUBLIC_TOKEN_HEADER, SHOPIFY_STOREFRONT_ID_HEADER, SHOPIFY_Y, SHOPIFY_S, SHOPIFY_STOREFRONT_Y_HEADER, SHOPIFY_STOREFRONT_S_HEADER } from "./cart-constants.mjs"; import { parse as u } from "./node_modules/worktop/cookie/index.mjs"; function useCartFetch() { const { storeDomain, storefrontApiVersion, storefrontToken, storefrontId } = useShop(); return useCallback(({ query, variables }) => { const headers = { "Content-Type": "application/json", "X-SDK-Variant": "hydrogen", "X-SDK-Version": storefrontApiVersion, [STOREFRONT_API_PUBLIC_TOKEN_HEADER]: storefrontToken }; if (storefrontId) { headers[SHOPIFY_STOREFRONT_ID_HEADER] = storefrontId; } const cookieData = u(document.cookie); if (cookieData[SHOPIFY_Y] && cookieData[SHOPIFY_S]) { headers[SHOPIFY_STOREFRONT_Y_HEADER] = cookieData[SHOPIFY_Y]; headers[SHOPIFY_STOREFRONT_S_HEADER] = cookieData[SHOPIFY_S]; } return fetch(`https://${storeDomain}/api/${storefrontApiVersion}/graphql.json`, { method: "POST", headers, body: JSON.stringify({ query: query.toString(), variables }) }).then((res) => res.json()).catch((error) => { return { data: void 0, errors: error.toString() }; }); }, [storeDomain, storefrontApiVersion, storefrontToken, storefrontId]); } export { useCartFetch }; //# sourceMappingURL=cart-hooks.mjs.map