useMergeCart.ts 914 B

1234567891011121314151617181920212223242526272829303132333435
  1. "use client";
  2. import { useMutation } from "@apollo/client";
  3. import { useAppDispatch } from "@/store/hooks";
  4. import { addItem } from "@/store/slices/cart-slice";
  5. import { CREATE_MERGE_CART } from "@/graphql";
  6. import { GUEST_CART_ID } from "@/utils/constants";
  7. import { setCookie } from "@utils/cookie-tools";
  8. export function useMergeCart() {
  9. const dispatch = useAppDispatch();
  10. const [mergeCart, { loading: isLoading }] = useMutation(CREATE_MERGE_CART, {
  11. onCompleted: (response) => {
  12. const responseData = response?.createMergeCart?.mergeCart;
  13. if (!responseData) {
  14. return;
  15. }
  16. const cartId = responseData?.id ?? null;
  17. if (cartId !== null && typeof cartId !== "undefined") {
  18. setCookie(GUEST_CART_ID, String(cartId));
  19. }
  20. dispatch(addItem(responseData));
  21. },
  22. onError: (_error) => {
  23. },
  24. });
  25. return {
  26. mergeCart,
  27. isLoading,
  28. };
  29. }