[CL-AUTH-WALLET-SIGN-TIMEOUT-20260522] fix: wallet popup hang без feedback #177
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "cl-auth-wallet-sign-timeout-20260522"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Что сделано
Зачем
CEO repro #3: после CAPTCHA fix /auth/wallet больше не 400, но клик на Sign in with Wallet ни redirect ни error. Hypothesis: signMessageAsync зависает без resolve/reject при popup-closed-without-action.
## Что сделано - `app/src/hooks/useWalletAuth.ts:signAndAuth` оборачивает `signMessageAsync` в `Promise.race` с 90-секундным timeout. По истечении бросает `Error('wallet_sign_timeout')` который ловится существующим catch и пишет `walletAuthFailed` в authStore → AuthPage error banner. ## Зачем — CEO repro #3 после двух предыдущих fixes 1. PR#171 (nginx /partners/intake fallback) — landed. 2. PR#172 (opacity:0 Google overlay) — landed. 3. PR#173 (silent catch → surface error) — landed. 4. PR#174 (api turnstile TIMEOUT_SAFE_PATHS /wallet) — landed. CEO devtools screenshot после всех 4 PR: /auth/wallet больше не 400 (CAPTCHA ушёл), но user click на "Sign in with Wallet" не приводит ни к redirect, ни к error banner. Hypothesis: wagmi `signMessageAsync` зависает без resolve/ reject, когда wallet popup закрывается без действия (MetaMask quirk, popup blocked другим extension). Catch не срабатывает потому что Promise nи resolved нi rejected. 90s timeout даёт slack для hardware wallet PIN entry, но спасает stuck popup. ## План тестирования - `npx vitest run src/hooks/__tests__/useWalletAuth.test.ts` — passed. - `npx tsc --noEmit` — exit=0. - Post-deploy: CEO clicks Sign in with Wallet, при popup hang через 90s видит "Wallet authentication error" вместо тишины. ## Где могу ошибаться - 90s может быть мало для hardware wallets с долгим PIN entry. Ledger обычно <30s, Trezor — 1-2 min при сложном passphrase. Если CEO/users жалуются — увеличить до 180s. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>