UNPKG

@shopify/hydrogen-react

Version:

React components, hooks, and utilities for creating custom Shopify storefronts

175 lines (174 loc) 4.44 kB
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