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

@@ -171,7 +171,7 @@ export const enDict: Dict = {
walletDisconnect: "Disconnect",
walletLoginTitle: "Connect wallet",
walletLoginDesc:
"Sign a message to verify your BNB Chain wallet address. No transaction or gas fee.",
"Sign a message to verify your wallet address. No transaction or gas fee.",
walletInjected: "Use browser wallet",
walletInjectedDesc: "Sign with the wallet available in this browser.",
walletNoBrowserWallet: "No browser wallet detected",
@@ -183,14 +183,19 @@ export const enDict: Dict = {
walletTokenPocket: "TokenPocket",
walletMetaMask: "MetaMask",
walletImToken: "imToken",
favoritesFilters: "Filters",
favoriteSessionExpired: "Your session expired. Please sign in again.",
walletChooseDesktop:
"Choose the wallet you want to use. On desktop, install the matching browser extension and switch to BNB Chain.",
"Choose the wallet you want to use. On desktop, install the matching browser extension.",
walletChooseMobile: "Choose a wallet app to open this site.",
walletDesktopHint:
"If no wallet opens after clicking, make sure the matching browser extension is installed and enabled.",
walletInstallSelected:
"No {wallet} browser extension detected. Install or enable it, then try again.",
walletOpen: "Open",
walletQrLogin: "QR login",
walletMobileQrDesc:
"Use another device to scan this QR code and log in to this browser.",
walletTokenPocketQr: "TokenPocket QR login",
walletTokenPocketQrDesc:
"Recommended for China users. Scan with TokenPocket and sign to return login to this browser.",
@@ -212,6 +217,13 @@ export const enDict: Dict = {
walletLoginSuccess: "Wallet connected",
walletLoginFailed: "Wallet login failed",
walletDisconnected: "Wallet disconnected",
walletOtherMethods: "Other login methods",
walletUseCurrent: "Use current wallet",
walletOpening: "Opening {wallet}…",
walletAppNotInstalled: "If nothing opened, the app may not be installed.",
walletDownloadApp: "Download {wallet}",
walletRetry: "Try again",
walletConnecting: "Connecting…",
featureUnavailable: "Not available yet",
featureUnavailableDesc: "This feature is not available yet.",
confirm: "Got it",