@shopify/hydrogen-react
Version:
React components, hooks, and utilities for creating custom Shopify storefronts
175 lines (174 loc) • 4.55 kB
JavaScript
"use strict";
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const React = require("react");
const cartQueries = require("./cart-queries.js");
const cartHooks = require("./cart-hooks.js");
function useCartActions({
numCartLines,
cartFragment,
countryCode = "US",
languageCode = "EN"
}) {
const fetchCart = cartHooks.useCartFetch();
const cartFetch = React.useCallback(
(cartId) => {
return fetchCart({
query: cartQueries.CartQuery(cartFragment),
variables: {
id: cartId,
numCartLines,
country: countryCode,
language: languageCode
}
});
},
[fetchCart, cartFragment, numCartLines, countryCode, languageCode]
);
const cartCreate = React.useCallback(
(cart) => {
return fetchCart({
query: cartQueries.CartCreate(cartFragment),
variables: {
input: cart,
numCartLines,
country: countryCode,
language: languageCode
}
});
},
[cartFragment, countryCode, fetchCart, numCartLines, languageCode]
);
const cartLineAdd = React.useCallback(
(cartId, lines) => {
return fetchCart({
query: cartQueries.CartLineAdd(cartFragment),
variables: {
cartId,
lines,
numCartLines,
country: countryCode,
language: languageCode
}
});
},
[cartFragment, countryCode, fetchCart, numCartLines, languageCode]
);
const cartLineUpdate = React.useCallback(
(cartId, lines) => {
return fetchCart({
query: cartQueries.CartLineUpdate(cartFragment),
variables: {
cartId,
lines,
numCartLines,
country: countryCode,
language: languageCode
}
});
},
[cartFragment, countryCode, fetchCart, numCartLines, languageCode]
);
const cartLineRemove = React.useCallback(
(cartId, lines) => {
return fetchCart({
query: cartQueries.CartLineRemove(cartFragment),
variables: {
cartId,
lines,
numCartLines,
country: countryCode,
language: languageCode
}
});
},
[cartFragment, countryCode, fetchCart, numCartLines, languageCode]
);
const noteUpdate = React.useCallback(
(cartId, note) => {
return fetchCart({
query: cartQueries.CartNoteUpdate(cartFragment),
variables: {
cartId,
note,
numCartLines,
country: countryCode,
language: languageCode
}
});
},
[fetchCart, cartFragment, numCartLines, countryCode, languageCode]
);
const buyerIdentityUpdate = React.useCallback(
(cartId, buyerIdentity) => {
return fetchCart({
query: cartQueries.CartBuyerIdentityUpdate(cartFragment),
variables: {
cartId,
buyerIdentity,
numCartLines,
country: countryCode,
language: languageCode
}
});
},
[cartFragment, countryCode, fetchCart, numCartLines, languageCode]
);
const cartAttributesUpdate = React.useCallback(
(cartId, attributes) => {
return fetchCart({
query: cartQueries.CartAttributesUpdate(cartFragment),
variables: {
cartId,
attributes,
numCartLines,
country: countryCode,
language: languageCode
}
});
},
[cartFragment, countryCode, fetchCart, numCartLines, languageCode]
);
const discountCodesUpdate = React.useCallback(
(cartId, discountCodes) => {
return fetchCart({
query: cartQueries.CartDiscountCodesUpdate(cartFragment),
variables: {
cartId,
discountCodes,
numCartLines,
country: countryCode,
language: languageCode
}
});
},
[cartFragment, countryCode, fetchCart, numCartLines, languageCode]
);
return React.useMemo(
() => ({
cartFetch,
cartCreate,
cartLineAdd,
cartLineUpdate,
cartLineRemove,
noteUpdate,
buyerIdentityUpdate,
cartAttributesUpdate,
discountCodesUpdate,
cartFragment
}),
[
cartFetch,
cartCreate,
cartLineAdd,
cartLineUpdate,
cartLineRemove,
noteUpdate,
buyerIdentityUpdate,
cartAttributesUpdate,
discountCodesUpdate,
cartFragment
]
);
}
exports.useCartActions = useCartActions;
//# sourceMappingURL=useCartActions.js.map