fix: improve imToken wallet error prompts
All checks were successful
Deploy to Frontend Servers / deploy (push) Successful in 1m8s
All checks were successful
Deploy to Frontend Servers / deploy (push) Successful in 1m8s
This commit is contained in:
@@ -252,6 +252,10 @@ export const enDict: Dict = {
|
||||
walletLoginFailed: "Wallet login failed",
|
||||
walletNoAccount:
|
||||
"No wallet account was returned. Unlock your wallet and select an account, then try again.",
|
||||
walletRequestCanceled:
|
||||
"Wallet connection was canceled. Unlock your wallet, choose an account, and authorize this site, then try again.",
|
||||
walletBnbChainRequired:
|
||||
"Create or switch to a BNB Smart Chain (BSC) wallet in imToken, then try again.",
|
||||
walletDisconnected: "Wallet disconnected",
|
||||
walletOtherMethods: "Other login methods",
|
||||
walletUseCurrent: "Use current wallet",
|
||||
|
||||
@@ -254,6 +254,10 @@ export const idDict: Dict = {
|
||||
walletLoginFailed: "Login dompet gagal",
|
||||
walletNoAccount:
|
||||
"Dompet tidak mengembalikan akun apa pun. Buka kunci dompet, pilih akun, lalu coba lagi.",
|
||||
walletRequestCanceled:
|
||||
"Koneksi dompet dibatalkan. Buka kunci dompet, pilih akun, dan izinkan situs ini, lalu coba lagi.",
|
||||
walletBnbChainRequired:
|
||||
"Buat atau beralih ke dompet BNB Smart Chain (BSC) di imToken, lalu coba lagi.",
|
||||
walletDisconnected: "Dompet terputus",
|
||||
walletOtherMethods: "Metode login lainnya",
|
||||
walletUseCurrent: "Gunakan dompet saat ini",
|
||||
|
||||
@@ -205,6 +205,10 @@ export const jaDict: Dict = {
|
||||
walletLoginFailed: "ウォレットログインに失敗しました",
|
||||
walletNoAccount:
|
||||
"ウォレットからアカウントが返されませんでした。ウォレットのロックを解除してアカウントを選択し、もう一度お試しください。",
|
||||
walletRequestCanceled:
|
||||
"ウォレット接続がキャンセルされました。ウォレットのロックを解除し、アカウントを選択してこのサイトを承認してから、もう一度お試しください。",
|
||||
walletBnbChainRequired:
|
||||
"imToken で BNB Smart Chain(BSC)ウォレットを作成または切り替えてから、もう一度お試しください。",
|
||||
walletDisconnected: "ウォレットを切断しました",
|
||||
walletNoBrowserWallet: "ブラウザウォレットが見つかりません",
|
||||
walletNoBrowserWalletDesc:
|
||||
|
||||
@@ -251,6 +251,10 @@ export const koDict: Dict = {
|
||||
walletLoginFailed: "지갑 로그인에 실패했습니다",
|
||||
walletNoAccount:
|
||||
"지갑에서 계정이 반환되지 않았습니다. 지갑 잠금을 해제하고 계정을 선택한 후 다시 시도하세요.",
|
||||
walletRequestCanceled:
|
||||
"지갑 연결이 취소되었습니다. 지갑 잠금을 해제하고 계정을 선택한 뒤 이 사이트를 승인한 후 다시 시도하세요.",
|
||||
walletBnbChainRequired:
|
||||
"imToken에서 BNB Smart Chain(BSC) 지갑을 만들거나 전환한 후 다시 시도하세요.",
|
||||
walletDisconnected: "지갑 연결이 해제되었습니다",
|
||||
walletOtherMethods: "다른 로그인 방법",
|
||||
walletUseCurrent: "현재 지갑 사용",
|
||||
|
||||
@@ -253,6 +253,10 @@ export const msDict: Dict = {
|
||||
walletLoginFailed: "Log masuk dompet gagal",
|
||||
walletNoAccount:
|
||||
"Dompet tidak mengembalikan sebarang akaun. Nyahkunci dompet, pilih akaun, kemudian cuba lagi.",
|
||||
walletRequestCanceled:
|
||||
"Sambungan dompet dibatalkan. Nyahkunci dompet, pilih akaun dan benarkan laman ini, kemudian cuba lagi.",
|
||||
walletBnbChainRequired:
|
||||
"Cipta atau tukar kepada dompet BNB Smart Chain (BSC) dalam imToken, kemudian cuba lagi.",
|
||||
walletDisconnected: "Dompet diputuskan",
|
||||
walletOtherMethods: "Kaedah log masuk lain",
|
||||
walletUseCurrent: "Guna dompet semasa",
|
||||
|
||||
@@ -249,6 +249,10 @@ export const viDict: Dict = {
|
||||
walletLoginFailed: "Đăng nhập ví thất bại",
|
||||
walletNoAccount:
|
||||
"Ví không trả về tài khoản nào. Hãy mở khóa ví, chọn một tài khoản rồi thử lại.",
|
||||
walletRequestCanceled:
|
||||
"Kết nối ví đã bị hủy. Hãy mở khóa ví, chọn tài khoản và cấp quyền cho trang này rồi thử lại.",
|
||||
walletBnbChainRequired:
|
||||
"Hãy tạo hoặc chuyển sang ví BNB Smart Chain (BSC) trong imToken, rồi thử lạ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",
|
||||
|
||||
@@ -233,6 +233,10 @@ export const zhDict: Dict = {
|
||||
walletLoginSuccess: "钱包已连接",
|
||||
walletLoginFailed: "钱包登录失败",
|
||||
walletNoAccount: "钱包没有返回账号。请先解锁钱包并选择一个账号后重试。",
|
||||
walletRequestCanceled:
|
||||
"钱包连接已取消。请解锁钱包,选择账号并授权本站后重试。",
|
||||
walletBnbChainRequired:
|
||||
"请先在 imToken 创建或切换到 BNB Smart Chain(BSC)钱包,然后重试。",
|
||||
walletDisconnected: "钱包已断开",
|
||||
walletOtherMethods: "其他登录方式",
|
||||
walletUseCurrent: "使用当前钱包登录",
|
||||
|
||||
@@ -47,13 +47,33 @@ function errorText(error: unknown): string {
|
||||
return parts.join("\n");
|
||||
}
|
||||
|
||||
function errorCode(error: unknown): string {
|
||||
if (!error || typeof error !== "object") return "";
|
||||
const code = (error as Record<string, unknown>).code;
|
||||
return typeof code === "string" || typeof code === "number"
|
||||
? String(code)
|
||||
: "";
|
||||
}
|
||||
|
||||
function isNoAccountError(error: unknown): boolean {
|
||||
return /wallet must has at least one account|wallet must has one account|must have at least one account|no wallet account returned/i.test(
|
||||
errorText(error),
|
||||
);
|
||||
}
|
||||
|
||||
function isUserCanceledError(error: unknown): boolean {
|
||||
const text = errorText(error);
|
||||
const code = errorCode(error);
|
||||
return (
|
||||
code === "4001" ||
|
||||
/user[_ -]?cancell?ed|user rejected|request rejected|request denied|action rejected/i.test(
|
||||
text,
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
function normalizeWalletError(error: unknown): Error {
|
||||
if (isUserCanceledError(error)) return new Error("walletRequestCanceled");
|
||||
if (isNoAccountError(error)) return new Error("walletNoAccount");
|
||||
if (error instanceof Error) return error;
|
||||
const message = errorText(error);
|
||||
@@ -210,7 +230,9 @@ export async function connectInjectedWallet(
|
||||
|
||||
console.info("[wallet-login] ensuring BNB Chain (0x38)…");
|
||||
await ensureBnbChain(ethereum).catch((error: unknown) => {
|
||||
console.warn("[wallet-login] BNB Chain switch skipped", error);
|
||||
console.warn("[wallet-login] BNB Chain switch failed", error);
|
||||
if (kind === "imToken") throw new Error("walletBnbChainRequired");
|
||||
throw normalizeWalletError(error);
|
||||
});
|
||||
return address;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user