@shopify/hydrogen-react
Version:
React components, hooks, and utilities for creating custom Shopify storefronts
49 lines (48 loc) • 1.57 kB
JavaScript
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