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