useMergeCart.ts 998 B

123456789101112131415161718192021222324252627282930313233343536
  1. "use client";
  2. import { useMutation } from "@apollo/client/react";
  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. import { CreateMergeCartData } from "@/types/cart/type";
  9. export function useMergeCart() {
  10. const dispatch = useAppDispatch();
  11. const [mergeCart, { loading: isLoading }] = useMutation<CreateMergeCartData>(CREATE_MERGE_CART, {
  12. onCompleted: (response) => {
  13. const responseData = response?.createMergeCart?.mergeCart;
  14. if (!responseData) {
  15. return;
  16. }
  17. const cartId = responseData?.id ?? null;
  18. if (cartId !== null && typeof cartId !== "undefined") {
  19. setCookie(GUEST_CART_ID, String(cartId));
  20. }
  21. dispatch(addItem(responseData));
  22. },
  23. onError: (_error) => {
  24. },
  25. });
  26. return {
  27. mergeCart,
  28. isLoading,
  29. };
  30. }