@shopify/hydrogen-react
Version:
React components, hooks, and utilities for creating custom Shopify storefronts
61 lines (60 loc) • 1.95 kB
JavaScript
;
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const React = require("react");
const ShopifyProvider = require("./ShopifyProvider.js");
const cartConstants = require("./cart-constants.js");
const trackingUtils = require("./tracking-utils.js");
function useCartFetch() {
const {
storefrontId,
getPublicTokenHeaders,
getStorefrontApiUrl,
sameDomainForStorefrontApi
} = ShopifyProvider.useShop();
return React.useCallback(
({
query,
variables
}) => {
const headers = getPublicTokenHeaders({ contentType: "json" });
if (storefrontId) {
headers[cartConstants.SHOPIFY_STOREFRONT_ID_HEADER] = storefrontId;
}
if (!sameDomainForStorefrontApi) {
const { uniqueToken, visitToken } = trackingUtils.getTrackingValues();
if (uniqueToken) {
headers[cartConstants.SHOPIFY_STOREFRONT_Y_HEADER] = uniqueToken;
headers[trackingUtils.SHOPIFY_UNIQUE_TOKEN_HEADER] = uniqueToken;
}
if (visitToken) {
headers[cartConstants.SHOPIFY_STOREFRONT_S_HEADER] = visitToken;
headers[trackingUtils.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
]
);
}
exports.useCartFetch = useCartFetch;
//# sourceMappingURL=cart-hooks.js.map