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,8 +171,31 @@ export const msDict: Dict = {
walletLoginTitle: "Sambung dompet",
walletLoginDesc:
"Tandatangani mesej untuk mengesahkan alamat dompet. Tiada transaksi atau gas.",
walletInjected: "Dompet pelayar / pelayar DApp",
walletInjectedDesc: "Gunakan dompet yang tersedia dalam pelayar ini.",
walletInjected: "Guna dompet pelayar",
walletInjectedDesc:
"Tandatangani dengan dompet yang tersedia dalam pelayar ini.",
walletNoBrowserWallet: "Tiada dompet pelayar dikesan",
walletNoBrowserWalletDesc:
"Pasang atau aktifkan sambungan dompet pelayar, seperti MetaMask.",
walletOpenWalletApp: "Buka aplikasi dompet",
walletOpenWalletAppDesc:
"Buka laman ini dalam aplikasi dompet anda, kemudian tandatangani untuk log masuk.",
walletTokenPocket: "TokenPocket",
walletMetaMask: "MetaMask",
walletImToken: "imToken",
favoritesFilters: "Penapis",
favoriteSessionExpired: "Sesi anda telah tamat. Sila log masuk semula.",
walletChooseDesktop:
"Pilih dompet yang ingin anda gunakan. Pada desktop, pasang sambungan pelayar yang sepadan.",
walletChooseMobile: "Pilih aplikasi dompet untuk membuka laman ini.",
walletDesktopHint:
"Jika tiada dompet terbuka selepas klik, pastikan sambungan pelayar yang sepadan telah dipasang dan diaktifkan.",
walletInstallSelected:
"Tiada sambungan pelayar {wallet} dikesan. Pasang atau aktifkannya, kemudian cuba lagi.",
walletOpen: "Buka",
walletQrLogin: "Log masuk QR",
walletMobileQrDesc:
"Guna peranti lain untuk mengimbas kod QR ini dan log masuk pada pelayar ini.",
walletTokenPocketQr: "Log masuk QR TokenPocket",
walletTokenPocketQrDesc:
"Disyorkan untuk pengguna China. Imbas dengan TokenPocket dan tandatangani untuk log masuk pada pelayar ini.",
@@ -194,6 +217,14 @@ export const msDict: Dict = {
walletLoginSuccess: "Dompet disambungkan",
walletLoginFailed: "Log masuk dompet gagal",
walletDisconnected: "Dompet diputuskan",
walletOtherMethods: "Kaedah log masuk lain",
walletUseCurrent: "Guna dompet semasa",
walletOpening: "Membuka {wallet}…",
walletAppNotInstalled:
"Jika tiada yang terbuka, aplikasi mungkin belum dipasang.",
walletDownloadApp: "Muat turun {wallet}",
walletRetry: "Cuba lagi",
walletConnecting: "Menyambung…",
featureUnavailable: "Belum tersedia",
featureUnavailableDesc: "Ciri ini belum tersedia.",
confirm: "Faham",