Quellcode durchsuchen

eslint 错误修改;支付方式错误展示修改

fogwind vor 4 Tagen
Ursprung
Commit
f7a16e7340

+ 19 - 5
README.md

@@ -294,8 +294,17 @@ useEffect 只会在客户端执行,具体是在浏览器绘制后执行,服
   - line: 913
 
 8. apollo client 升级后需要用新的方法设置返回数据的类型 -- 已完成
-9. Apollo client的错误处理机制 (src\graphql\catalog\queries\GetFilterAttributes.ts 这个接口可以测试错误)
+9. Apollo client的错误处理机制:
+   1. 一般try...catch 捕获;2. 如果是像useQuery这种返回结果中有error字段的,中通过error属性处理;3.还有的是通过hook的onError回调处理。
+   但是不管哪种处理方式,获取到的error对象都是一样的。
+    ---- (src\graphql\catalog\queries\GetFilterAttributes.ts 这个接口可以测试错误)
     ---- 下单错误处理(afterpay 使用支付失败的卡测试) afterpay金额40 报错
+    ---- 登录用户token过期错误处理
+    ---- serverGraphqlFetch 错误处理:1.业务错误,需要提示的在页面提示;2.throw的错误交给error.tsx和global-error.tsx处理
+    ---- rest api 错误处理
+    ---- graphql接口返回的错误有的有extensions字段,有的没有 具体可以查看nshop项目packages/Webkul/BagistoApi/src/Exception/下的异常类(一般看是否有getExtensions方法)
+    ---------骨架已搭好,待验证是否好用-------------
+    
 10. 产品详情页代码优化 --- 已完成
 11. 代码eslint检查修改 -- 已完成
 12. 下单成功后需要重新创建购物车token -- 无需处理
@@ -319,23 +328,28 @@ useEffect 只会在客户端执行,具体是在浏览器绘制后执行,服
     - https://github.com/livechat/chat-widget-adapters
 28. cancelOrder接口报错   --  已解决
 29. 购物车数据管理方案 -- 已完成
-30. 货币列表,国家列表等关于商城配置的数据采用全局ConfigProvider管理;
-31. 当前货币等采用redux管理;
-32. 当前货币切换功能
+30. 货币列表,国家列表等关于商城配置的数据采用全局ConfigProvider管理; -- 已完成
+31. 当前货币等采用redux管理;-- 废弃,已改为全局ConfigProvider管理
+32. 当前货币切换功能      --- 已完成
 33. 登录用户购物车页获取未支付订单
 34. 结账页下单成功后清空redux购物车数据导致结账页重新渲染问题  -- 已解决
     - 通过修改结账页数据初始化逻辑解决
 35. 结账页默认设置运输方式问题(导致结算联动风暴)
 36. 学习set-state-in-effect,然后检查代码,看是否可以优化(特别是CommonModal组件,看能不能不使用useEffect实现)
-37. paypal provider 支付参数根据环境变量配置
+37. paypal provider 支付参数根据环境变量配置 --- 已完成
 38. CartAndUserActions 组件在支付结果页多次挂载问题
 39. 服务端去掉apollo client。apollo client 只在客户端使用; apollo 错误处理(第9条);
 40. Authorization 写入header优化;
+    ---- https://chatgpt.com/share/6a6acb5d-e184-83ea-acfc-839fe0d34caf
 41. 货币切换功能,货币切换后货币符号没有修改问题
 42. 错误处理 https://nextjs.org/docs/app/getting-started/error-handling
 43. redux中的user删除
 44. 关于订单id,管理后台订单列表里显示的是increment_id(数据库里的字段名),前端页面上用的是id(数据库里的字段名)对应接口里的orderId
 
+45. nextjs缓存与bagisto后台管理打通(后台修改配置通知nextjs清除缓存)
+    -- 参考https://chat.deepseek.com/share/6h1huduahkqln69gu1
+
+
 > 39,40 参考 https://chatgpt.com/share/6a4f0637-ad28-83ea-ad44-423740795054
 
 ## 接入klarna

+ 3 - 2
src/app/(checkout)/checkout/_components/CheckoutWrapper.tsx

@@ -26,13 +26,13 @@ import { overlayLoading } from "@/components/theme/ui/kernel/loading/api";
 import { confirmDialog } from "@/components/theme/ui/kernel/confirm/api";
 import {normalizePhoneForForm} from "@/utils/phoneNumberTools";
 import { LoadingSpinner } from "@components/common/LoadingSpinner";
-import CheckoutShippingMethodLoading from "./CheckoutShippingMethodLoading";
+
 import AddressResultDisplay from "./AddressResultDisplay";
 import ShippingAddressCheckout from "./ShippingAddressCheckout";
 import BillingAddressCheckout from "./BillingAddressCheckout";
 import {ShippingMethodCheckout,RefShippingMethodsHandle} from "./ShippingMethodCheckout";
 import {PaymentMethodCheckout,RefPaymentMethodsHandle} from "./PaymentMethodCheckout";
-import LoadingPaymentMethod from "./LoadingPaymentMethod";
+
 import LoadingCheckoutPlaceOrder from "./LoadingCheckoutPlaceOrder";
 import CheckoutPlaceOrder from "./CheckoutPlaceOrder";
 import CommonModal from "@/components/theme/ui/CommonModal";
@@ -686,6 +686,7 @@ export default function CheckoutWrapper({
                     paymentMethods={paymentMethodDatas} 
                     selectedPaymentMethod={selectedPaymentMethod}
                     paymentMethodLoading={paymentMethodLoading}
+                    loadError={paymentMethodError}
                     onPaymentMethodChange={handlePaymentMethodChange}
                 />
                 

+ 4 - 2
src/app/(checkout)/checkout/_components/PaymentMethodCheckout.tsx

@@ -27,12 +27,14 @@ export function PaymentMethodCheckout({
     paymentMethods,
     selectedPaymentMethod,
     paymentMethodLoading,
+    loadError,
     onPaymentMethodChange,
 }: {
     ref: Ref<RefPaymentMethodsHandle>;
     paymentMethods: CheckoutPaymentMethod[];
     selectedPaymentMethod: string;
     paymentMethodLoading: boolean;
+    loadError: string | null;
     onPaymentMethodChange: (value: string) => Promise<boolean>;
 }) {
 
@@ -142,9 +144,9 @@ export function PaymentMethodCheckout({
     return (<>
 
         { paymentMethodLoading && <LoadingPaymentMethod /> }
-        { (!paymentMethodLoading && paymentMethodError) && <p className="mt-3 text-red-500 text-ly-12">{paymentMethodError}</p>}
+        { (!paymentMethodLoading && loadError) && <p className="mt-3 text-red-500 text-ly-12">{loadError}</p>}
         <form name="shipping method" className={clsx("w-full", {
-            "hidden": (paymentMethodLoading || paymentMethodError)
+            "hidden": (paymentMethodLoading || loadError)
         })}>
         
             <div className="mt-3 w-full">

+ 1 - 12
src/utils/bagisto/index.ts

@@ -185,7 +185,6 @@ export async function serverGraphqlFetch<
   tags,
   variables,
   revalidate = 0,
-  // operationName = ''
 }: {
   cache?: RequestCache;
   headers?: HeadersInit | Record<string, string>;
@@ -193,7 +192,6 @@ export async function serverGraphqlFetch<
   tags?: string[];
   variables?: TVariables;
   revalidate?: number;
-  // operationName?: string;
 }): Promise<FetchGraphqlResult<TData>> {
   try {
     const queryString = typeof query === "string" ? query : print(query);
@@ -259,14 +257,7 @@ export async function serverGraphqlFetch<
       data:body.data ?? null,
       error:body.errors?.[0] ?? null
     }
-    // if (body.errors) {
-    //   if(operationName === 'GetCartItem' && body.errors[0].message === 'Cart not found') {
-    //     return { status: result.status, data: body.data, error: null };
-    //   } else {
-    //     return { status: result.status, data: body.data, error: body.errors[0] };
-    //   }
-    // }
-    // return { status: result.status, data: body.data,error: null };
+
   } catch (e) {
     console.error( "GraphQL request failed", e );
     throw e;
@@ -283,7 +274,6 @@ export async function bagistoFetch<T>({
   isCookies = true,
   guestToken,
   revalidate = 60,
-  operationName = ''
 }: {
   cache?: RequestCache;
   headers?: HeadersInit | Record<string, string>;
@@ -293,7 +283,6 @@ export async function bagistoFetch<T>({
   isCookies?: boolean;
   guestToken?: string;
   revalidate?: number;
-  operationName?: string;
 }): Promise<{ status: number; body: T } | never> {
   try {
     const queryString =