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