feat: distinguish Freighter locked state from not-installed with clear UI - #1017
Open
Horlarmmy wants to merge 1 commit into
Open
feat: distinguish Freighter locked state from not-installed with clear UI#1017Horlarmmy wants to merge 1 commit into
Horlarmmy wants to merge 1 commit into
Conversation
|
@Horlarmmy Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits. You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀 |
Contributor
|
Auto-review failed (API error). Leaving PR for human review. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Closes #809
When Freighter is installed but locked (password-protected), the wallet connection flow previously showed the same "Install Freighter" modal as when the extension is not installed at all. This led to confusing guidance — users were told to install something they already had.
This PR detects the locked-wallet error distinctly and surfaces copy telling the user to unlock Freighter rather than reinstall it.
Changes
src/utils/freighterErrors.tsFreighterLockedErrorclassisFreighterLockedError(error)— detects error messages matching patterns like"freighter is locked","wallet is locked","unlock your wallet","extension is locked"src/components/InstallFreighterModal.tsxisLockedprop (defaultfalse)src/components/WalletContext.tsxisFreighterLockedstategetAddress()returns, checkskey.errorfor locked patterns (Freighter API v6 returns error objects, not thrown exceptions)catchblock for thrown locked errorsisLocked=trueinstead of the generic error toasthandleRetryInstallsimplified — closes modal, resets locked flag, callsconnectWallet()which re-opens in the correct mode if still lockedsrc/components/__tests__/WalletContext.test.tsx"connectWallet - freighter locked"test — mocksgetAddressto return{ error: { message: "Freighter is locked" } }, verifies locked-specific heading and unlock guidance appearFlow