From 0b277727187b959e368eb081d180f67730003ea2 Mon Sep 17 00:00:00 2001 From: NAC Admin Date: Wed, 18 Mar 2026 01:01:11 +0800 Subject: [PATCH] =?UTF-8?q?fix(presale):=20EVMPurchasePanel=20-=20?= =?UTF-8?q?=E4=BF=AE=E5=A4=8DERC/BEP=E7=BD=91=E7=BB=9C=E6=9C=AA=E8=BF=9E?= =?UTF-8?q?=E6=8E=A5=E9=92=B1=E5=8C=85=E6=97=B6=E9=87=91=E9=A2=9D=E8=BE=93?= =?UTF-8?q?=E5=85=A5=E6=A1=86=E4=B8=8D=E6=98=BE=E7=A4=BA=E7=9A=84Bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 问题描述: - ERC/BEP面板在钱包未连接时直接早期返回,导致金额输入框不显示 - TRC面板始终显示金额输入框,造成用户体验不一致 修复方案: - 移除EVMPurchasePanel中的早期返回(if !wallet.isConnected) - 改为条件渲染:金额输入框和代币预览始终显示 - 钱包未连接时:在购买按钮位置显示连接钱包组件 - 错误网络时:顶部显示切换网络提示,购买按钮隐藏 - 钱包已连接且网络正确时:显示钱包信息和购买按钮 测试结果: - BSC/ETH/TRON三个网络均在未连接钱包状态下显示金额输入框 - 构建成功,已部署到AI服务器(43.224.155.27) - 服务已重启,trc-ico.newassetchain.io 已更新 --- presale-app/client/src/pages/Home.tsx | 114 ++++++++++++-------------- 1 file changed, 54 insertions(+), 60 deletions(-) diff --git a/presale-app/client/src/pages/Home.tsx b/presale-app/client/src/pages/Home.tsx index 819001c..f49f506 100644 --- a/presale-app/client/src/pages/Home.tsx +++ b/presale-app/client/src/pages/Home.tsx @@ -357,44 +357,7 @@ function EVMPurchasePanel({ network, lang, wallet }: { network: "BSC" | "ETH"; l } }, [purchaseState.step, purchaseState.error, purchaseState.tokenAmount, lang]); - if (!wallet.isConnected) { - return ( -
-

{t("buy_connect_msg")}

- { - // WalletSelector already called eth_requestAccounts and got the address - // Just show success toast; wallet state will auto-update via accountsChanged event - toast.success(lang === "zh" ? `已连接: ${addr.slice(0, 6)}...${addr.slice(-4)}` : `Connected: ${addr.slice(0, 6)}...${addr.slice(-4)}`); - }} - compact - /> -
{t("buy_connect_hint")}
-
- ); - } - - if (isWrongNetwork) { - return ( -
-
-
⚠️
-

{t("buy_wrong_network")}

-

{t("buy_wrong_msg")} {CONTRACTS[network].chainName}

- -
-
- ); - } - - if (purchaseState.step === "success") { + if (purchaseState.step === "success") { return (
🎉
@@ -425,16 +388,32 @@ function EVMPurchasePanel({ network, lang, wallet }: { network: "BSC" | "ETH"; l return (
- {/* Wallet info */} -
-
-
- {shortenAddress(wallet.address || "")} + {/* Wallet info — only shown when connected */} + {wallet.isConnected && !isWrongNetwork && ( +
+
+
+ {shortenAddress(wallet.address || "")} +
+ {usdtBalance !== null && ( + {t("buy_balance")} {usdtBalance.toFixed(2)} USDT + )}
- {usdtBalance !== null && ( - {t("buy_balance")} {usdtBalance.toFixed(2)} USDT - )} -
+ )} + {/* Wrong network banner */} + {isWrongNetwork && ( +
+
⚠️
+

{t("buy_wrong_network")}

+

{t("buy_wrong_msg")} {CONTRACTS[network].chainName}

+ +
+ )} {/* USDT Amount Input */}
@@ -502,19 +481,34 @@ function EVMPurchasePanel({ network, lang, wallet }: { network: "BSC" | "ETH"; l
)} - {/* Buy Button */} - + {/* Buy Button — or Connect Wallet if not connected */} + {!wallet.isConnected ? ( +
+

{t("buy_connect_msg")}

+ { + toast.success(lang === "zh" ? `已连接: ${addr.slice(0, 6)}...${addr.slice(-4)}` : `Connected: ${addr.slice(0, 6)}...${addr.slice(-4)}`); + }} + compact + /> +
{t("buy_connect_hint")}
+
+ ) : isWrongNetwork ? null : ( + + )}

{PRESALE_CONFIG.maxPurchaseUSDT > 0