Explorar el Código

redux 购物车数据存储优化 -- updateCartItem 接口

fogwind hace 4 días
padre
commit
b7bbffa6b6

+ 6 - 2
src/graphql/cart/mutations/UpdateCartItems.ts

@@ -14,7 +14,7 @@ export const UPDATE_CART_ITEM = gql
     ) {
       updateCartItem {
         id
-         taxAmount
+        taxAmount
         shippingAmount
         subtotal
         grandTotal
@@ -35,8 +35,12 @@ export const UPDATE_CART_ITEM = gql
             }
           }
         }
-          itemsQty
+        itemsQty
         grandTotal
+        paymentMethod
+        paymentMethodTitle
+        selectedShippingRate
+        selectedShippingRateTitle
       }
     }
   }

+ 4 - 0
src/types/cart/type.ts

@@ -277,6 +277,10 @@ export interface UpdateCartItem {
   grandTotal: number;
   itemsQty: number;
   items: UpdateCartItemsConnection;
+  paymentMethod: string | null;
+  paymentMethodTitle: string | null;
+  selectedShippingRate: string | null;
+  selectedShippingRateTitle: string | null;
 }
 export interface CreateUpdateCartItemPayload {
   updateCartItem: UpdateCartItem;

+ 16 - 4
src/utils/hooks/useAddToCart.ts

@@ -14,7 +14,7 @@ import {
   REMOVE_CART_ITEM,
   UPDATE_CART_ITEM,
 } from "@/graphql";
-import { AddToCartData, RemoveCartItemData } from "@/types/cart/type";
+import { AddToCartData, RemoveCartItemData, UpdateCartItemData } from "@/types/cart/type";
 
 
 
@@ -138,14 +138,26 @@ export const useAddProduct = () => {
   };
 
   //---------Update Cart Product Quantity--------//
-  const [updateCartItem, { loading: isUpdateLoading }] = useMutation(
+  const [updateCartItem, { loading: isUpdateLoading }] = useMutation<UpdateCartItemData>(
     UPDATE_CART_ITEM,
     {
-      onCompleted: (response: any) => {
+      onCompleted: (response) => {
         const responseData = response?.createUpdateCartItem?.updateCartItem;
 
         if (isObject(responseData)) {
-          dispatch(addItem(responseData as any));
+          let cartDetail = {
+            id: responseData.id,
+            itemsQty: responseData.itemsQty,
+            taxAmount: responseData.taxAmount,
+            shippingAmount: responseData.shippingAmount,
+            grandTotal: responseData.grandTotal,
+            items: responseData.items,
+            paymentMethod: responseData.paymentMethod || '',
+            paymentMethodTitle: responseData.paymentMethodTitle || '',
+            selectedShippingRate: responseData.selectedShippingRate || '',
+            selectedShippingRateTitle: responseData.selectedShippingRateTitle || '',
+          };
+          dispatch(addItem(cartDetail));
         } else {
           showToast("Something went wrong!", "warning");
         }