nac-presale/CHANGELOG_20260320_manual_a...

72 lines
2.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 购买按钮修复日志 - 2026-03-20手动地址模式
## 修复时间
2026-03-20
## 问题描述
trc-ico.newassetchain.io 购买区域:用户点击"Enter address manually"输入地址并点击 Confirm 后,
购买按钮没有出现,界面无任何变化。
## 根本原因
文件: `client/src/pages/Home.tsx`
`EVMPurchasePanel` 组件中,`WalletSelector` 的 `onAddressDetected` 回调只显示了 toast 提示,
没有更新组件状态,导致 `wallet.isConnected` 仍然为 `false`,购买按钮不渲染。
```tsx
// 修复前(问题代码)
onAddressDetected={(addr) => {
toast.success(`Connected: ${addr.slice(0, 6)}...${addr.slice(-4)}`);
// ← 没有更新任何状态!
}}
```
## 修复方案
`EVMPurchasePanel` 中添加 `manualAddress` 状态:
```tsx
const [manualAddress, setManualAddress] = useState<string | null>(null);
const effectiveAddress = wallet.address || manualAddress;
const isManualMode = !wallet.isConnected && !!manualAddress;
```
修改 `onAddressDetected` 回调:
```tsx
onAddressDetected={(addr) => {
setManualAddress(addr); // ← 保存手动输入的地址
toast.success(`Address confirmed: ${addr.slice(0, 6)}...${addr.slice(-4)}`);
}}
```
修改条件渲染:
- `!wallet.isConnected && !manualAddress` → 显示 WalletSelector
- `isManualMode` → 显示购买按钮(提示需要连接钱包完成链上交易)
- `wallet.isConnected` → 显示正常购买按钮
## 构建信息
- 构建时间: 2026-03-20
- 新 bundle: index-By9gUhW4.js (815.67 kB)
- 构建耗时: 7.18s
- 1858 modules transformed
## 部署步骤
1. 修改 client/src/pages/Home.tsx
2. 执行 pnpm run build
3. 删除 dist/public/__manus__ 目录
4. PM2 重启: pm2 restart nac-presale-test
5. 验证: HTTP 200 响应
## 备份文件
- Home.tsx 备份: client/src/pages/Home.tsx.bak.manual_addr_fix_20260320
- dist 备份: dist/public.bak.manual_addr_fix_20260320
## Git 提交
- commit hash: 5136b59
- 提交信息: fix: 修复手动输入地址后购买按钮不显示的问题
- 推送到: nacadmin/nac-presale master
## 验证结果
- 用户输入地址 0x1234...7890 并点击 Confirm
- 购买按钮出现:"Connect Wallet to Buy 5.00K XIC"
- 地址信息栏显示手动地址(琥珀色样式)
- HTTP 200 响应正常