useSaveCheckoutCart.ts 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import {useCallback} from "react";
  2. import { useApolloClient } from "@apollo/client/react";
  3. import {
  4. CREATE_SAVE_CHECKOUT_CART
  5. } from "@/graphql";
  6. import { SaveCheckoutCartVariables, SaveCheckoutCart } from "@/types/checkout/type";
  7. interface SaveCheckoutCartResult {
  8. data: SaveCheckoutCart | null;
  9. msg: string;
  10. error: boolean;
  11. }
  12. export const useSaveCheckoutCart = () => {
  13. const client = useApolloClient();
  14. const defaultVariables = {
  15. shippingMethod: '-1',
  16. paymentMethod: '-1',
  17. couponCode: '-1',
  18. giftCardNumber: '-1',
  19. memberDiscount: '-1',
  20. useShippingInsurance: '-1',
  21. rewardPoints: -1
  22. };
  23. const saveCheckoutCart = useCallback((params: SaveCheckoutCartVariables) => {
  24. const variables = Object.assign({},defaultVariables,params);
  25. return client.mutate({
  26. mutation: CREATE_SAVE_CHECKOUT_CART,
  27. variables: variables //params
  28. }).then((res) => {
  29. const resData = res.data?.createSaveCheckoutCart.saveCheckoutCart ?? null;
  30. const result: SaveCheckoutCartResult = {
  31. data:resData,
  32. msg: '',
  33. error: false
  34. };
  35. return result;
  36. }).catch((err) => {
  37. const result: SaveCheckoutCartResult = {
  38. data: null,
  39. msg: err.message,
  40. error: true
  41. };
  42. return result;
  43. });
  44. },[client]);
  45. return {
  46. saveCheckoutCart
  47. };
  48. };