feat: redesign wallet login and favorites, fix desktop/mobile bugs

- Remove forced BNB chain switch on injected login (signature is chain-agnostic)
- Refine isMobileDevice so touch Macs stay on desktop flow
- Wire RainbowKit/WalletConnect as a real MetaMask/imToken QR fallback,
  gated on a valid VITE_WALLETCONNECT_PROJECT_ID
- Rebuild login modal: single desktop primary action, collapsible other
  methods, mobile open-app fallback feedback, brand icons
- Add My Favorites entry points (header, mobile menu, wallet dropdown)
- Favorites page: error retry, mobile filter drawer
- Auto sign-out and re-login prompt on favorites 401
- Full native translations for all wallet strings across 7 locales

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
TerryM
2026-06-02 03:43:13 +08:00
parent f935f122f9
commit 7abe4a868c
17 changed files with 715 additions and 155 deletions

View File

@@ -170,8 +170,30 @@ export const viDict: Dict = {
walletLoginTitle: "Kết nối ví",
walletLoginDesc:
"Ký tin nhắn để xác minh địa chỉ ví. Không có giao dịch hay phí gas.",
walletInjected: "Ví trình duyệt / trình duyệt DApp",
walletInjectedDesc: "ng ví đã có trong trình duyệt hiện tại.",
walletInjected: "Dùng ví trình duyệt",
walletInjectedDesc: "Ký bằng ví đã có trong trình duyệt này.",
walletNoBrowserWallet: "Không tìm thấy ví trình duyệt",
walletNoBrowserWalletDesc:
"Cài đặt hoặc bật tiện ích mở rộng ví trình duyệt, chẳng hạn như MetaMask.",
walletOpenWalletApp: "Mở ứng dụng ví",
walletOpenWalletAppDesc:
"Mở trang này trong ứng dụng ví của bạn, sau đó ký để đăng nhập.",
walletTokenPocket: "TokenPocket",
walletMetaMask: "MetaMask",
walletImToken: "imToken",
favoritesFilters: "Bộ lọc",
favoriteSessionExpired: "Phiên đăng nhập đã hết hạn. Vui lòng đăng nhập lại.",
walletChooseDesktop:
"Chọn ví bạn muốn dùng. Trên máy tính, hãy cài tiện ích mở rộng trình duyệt tương ứng.",
walletChooseMobile: "Chọn ứng dụng ví để mở trang này.",
walletDesktopHint:
"Nếu không có ví nào mở sau khi nhấn, hãy đảm bảo tiện ích mở rộng tương ứng đã được cài đặt và bật.",
walletInstallSelected:
"Không tìm thấy tiện ích mở rộng {wallet}. Hãy cài đặt hoặc bật nó, rồi thử lại.",
walletOpen: "Mở",
walletQrLogin: "Đăng nhập QR",
walletMobileQrDesc:
"Dùng thiết bị khác quét mã QR này để đăng nhập trên trình duyệt này.",
walletTokenPocketQr: "Đăng nhập QR TokenPocket",
walletTokenPocketQrDesc:
"Khuyến nghị cho người dùng Trung Quốc. Quét bằng TokenPocket và ký để đăng nhập trên trình duyệt này.",
@@ -193,6 +215,14 @@ export const viDict: Dict = {
walletLoginSuccess: "Đã kết nối ví",
walletLoginFailed: "Đăng nhập ví thất bại",
walletDisconnected: "Đã ngắt kết nối ví",
walletOtherMethods: "Phương thức đăng nhập khác",
walletUseCurrent: "Dùng ví hiện tại",
walletOpening: "Đang mở {wallet}…",
walletAppNotInstalled:
"Nếu không có gì mở, ứng dụng có thể chưa được cài đặt.",
walletDownloadApp: "Tải {wallet}",
walletRetry: "Thử lại",
walletConnecting: "Đang kết nối…",
featureUnavailable: "Chưa khả dụng",
featureUnavailableDesc: "Tính năng này hiện chưa khả dụng.",
confirm: "Đã hiểu",