fix: 28589 resolve the ledger monad swap issue. cp-7.79.0#29091
Conversation
…nd update dependencies - Introduced a new preview build configuration for `@metamask/eth-ledger-bridge-keyring` with version `12.0.1-7275dbc`. - Updated `yarn.lock` to include new versions for several dependencies, including `@ledgerhq/devices`, `@ledgerhq/errors`, and `@ledgerhq/hw-transport`, ensuring compatibility and improved functionality. - Adjusted the versioning for `@metamask/keyring-api` and `@metamask/keyring-sdk` to their latest versions, enhancing the overall performance and stability of the application.
|
CLA Signature Action: All authors have signed the CLA. You may need to manually re-run the blocking PR check if it doesn't pass in a few minutes. |
|
@copilot resolve the merge conflicts in this pull request |
…-issue # Conflicts: # yarn.lock Co-authored-by: dawnseeker8 <7315988+dawnseeker8@users.noreply.github.com>
Resolved. Merged |
|
@copilot resolve the merge conflicts in this pull request |
…-issue # Conflicts: # yarn.lock Co-authored-by: dawnseeker8 <7315988+dawnseeker8@users.noreply.github.com>
Resolved again. Merged the latest |
|
@copilot resolve the merge conflicts in this pull request |
…-issue # Conflicts: # .github/workflows/runway-ota-build-core.yml # app/component-library/components-temp/Contracts/ContractBox/ContractBox.test.tsx # app/component-library/components-temp/Contracts/ContractBoxBase/ContractBoxBase.test.tsx # app/components/Approvals/ApprovalModal/ApprovalModal.test.tsx # app/components/Base/AnimatedFox/index.test.tsx # app/components/Nav/Main/__snapshots__/index.test.tsx.snap # app/components/UI/AccountFromToInfoCard/__snapshots__/AccountFromToInfoCard.test.tsx.snap # app/components/UI/AccountNetworkIndicator/AccountNetworkIndicator.test.tsx # app/components/UI/ActionModal/__snapshots__/index.test.tsx.snap # app/components/UI/ActionModal/index.test.tsx # app/components/UI/ActionView/index.test.tsx # app/components/UI/AnimatedSpinner/index.test.tsx # app/components/UI/AnimatedTransactionModal/index.test.tsx # app/components/UI/AssetElement/__snapshots__/index.test.tsx.snap # app/components/UI/AssetIcon/index.test.tsx # app/components/UI/AssetList/index.test.tsx # app/components/UI/BasicFunctionality/BasicFunctionality.test.js # app/components/UI/BlockingActionModal/index.test.tsx # app/components/UI/Button/index.test.tsx # app/components/UI/Confetti/index.test.tsx # app/components/UI/CustomAlert/index.test.tsx # app/components/UI/FadeOutOverlay/index.test.tsx # app/components/UI/FadeView/index.test.tsx # app/components/UI/FoxScreen/index.test.tsx # app/components/UI/GenericButton/__snapshots__/index.test.tsx.snap # app/components/UI/GenericButton/index.test.tsx # app/components/UI/GlobalAlert/index.test.tsx # app/components/UI/HintModal/__snapshots__/index.test.tsx.snap # app/components/UI/HintModal/index.test.tsx # app/components/UI/ImageIcon/index.test.tsx # app/components/UI/LoginOptionsSwitch/LoginOptionsSwitch.test.tsx # app/components/UI/LoginOptionsSwitch/__snapshots__/LoginOptionsSwitch.test.tsx.snap # app/components/UI/ModalNavbarTitle/index.test.tsx # app/components/UI/NavbarBrowserTitle/index.test.tsx # app/components/UI/NavbarTitle/__snapshots__/index.test.js.snap # app/components/UI/NetworkMainAssetLogo/index.test.tsx # app/components/UI/OnboardingScreenWithBg/index.test.tsx # app/components/UI/SettingsNotification/__snapshots__/index.test.tsx.snap # app/components/UI/StyledButton/__snapshots__/index.test.tsx.snap # app/components/UI/Tabs/TabCountIcon/__snapshots__/index.test.tsx.snap # app/components/UI/TokenImage/__snapshots__/index.test.tsx.snap # app/components/UI/TokenImage/index.test.tsx # app/components/Views/AccountConnect/AccountConnectMultiSelector/__snapshots__/AccountConnectMultiSelector.test.tsx.snap # app/components/Views/AccountConnect/__snapshots__/AccountConnect.test.tsx.snap # app/components/Views/AccountPermissions/AccountPermissionsConfirmRevokeAll/__snapshots__/AccountPermissionsConfirmRevokeAll.test.tsx.snap # app/components/Views/AccountPermissions/ConnectionDetails/__snapshots__/ConnectionDetails.test.tsx.snap # app/components/Views/AccountPermissions/NetworkPermissionsConnected/__snapshots__/NetworkPermissionsConnected.test.tsx.snap # app/components/Views/AccountPermissions/PermittedNetworksInfoSheet/__snapshots__/PermittedNetworksInfoSheet.test.tsx.snap # app/components/Views/AccountPermissions/__snapshots__/AccountPermissions.test.tsx.snap # app/components/Views/AccountSelector/AccountSelector.styles.ts # app/components/Views/AccountStatus/__snapshots__/index.test.tsx.snap # app/components/Views/ActivityView/__snapshots__/index.test.tsx.snap # app/components/Views/AddAccountActions/__snapshots__/AddAccountActions.test.tsx.snap # app/components/Views/AddBookmark/__snapshots__/index.test.tsx.snap # app/components/Views/AddressSelector/__snapshots__/AddressSelector.test.tsx.snap # app/components/Views/AesCryptoTestForm/__snapshots__/AesCryptoTestForm.test.tsx.snap # app/components/Views/AesCryptoTestForm/__snapshots__/Clipboard.test.tsx.snap # app/components/Views/AesCryptoTestForm/__snapshots__/Form.test.tsx.snap # app/components/Views/Browser/__snapshots__/Browser.rendering.test.tsx.snap # app/components/Views/Browser/__snapshots__/Browser.tabs.test.tsx.snap # app/components/Views/Browser/__snapshots__/MaxBrowserTabsModal.test.tsx.snap # app/components/Views/BrowserTab/__snapshots__/index.test.tsx.snap # app/components/Views/BrowserTab/components/IpfsBanner/__snapshots__/index.test.tsx.snap # app/components/Views/BrowserTab/components/Options/__snapshots__/index.test.tsx.snap # app/components/Views/BrowserTab/components/PhishingModal/__snapshots__/index.test.tsx.snap # app/components/Views/ChangeInSimulationModal/__snapshots__/ChangeInSimulationModal.test.tsx.snap # app/components/Views/ConnectQRHardware/__snapshots__/index.test.tsx.snap # app/components/Views/DataCollectionModal/__snapshots__/index.test.tsx.snap # app/components/Views/DiscoveryTab/__snapshots__/DiscoveryTab.test.tsx.snap # app/components/Views/EnterPasswordSimple/__snapshots__/index.test.tsx.snap # app/components/Views/GasEducationCarousel/__snapshots__/index.test.tsx.snap # app/components/Views/ImportPrivateKey/__snapshots__/index.test.tsx.snap # app/components/Views/ImportPrivateKeySuccess/__snapshots__/index.test.tsx.snap # app/components/Views/InfoNetworkModal/__snapshots__/InfoNetworkModal.test.tsx.snap # app/components/Views/MultiRpcModal/__snapshots__/MultiRpcModal.test.tsx.snap # app/components/Views/NavigationUnitTest/__snapshots__/TestScreen1.test.js.snap # app/components/Views/NavigationUnitTest/__snapshots__/TestScreen2.test.js.snap # app/components/Views/NavigationUnitTest/__snapshots__/TestScreen3.test.js.snap # app/components/Views/OfflineMode/__snapshots__/index.test.tsx.snap # app/components/Views/OriginSpamModal/__snapshots__/OriginSpamModal.test.tsx.snap # app/components/Views/PickComponent/__snapshots__/index.test.tsx.snap # app/components/Views/ResetPassword/__snapshots__/index.test.tsx.snap # app/components/Views/Root/__snapshots__/index.test.tsx.snap # app/components/Views/ShowDisplayMediaNFTSheet/__snapshots__/ShowDisplayNFTMediaSheet.test.tsx.snap # app/components/Views/ShowIpfsGatewaySheet/__snapshots__/ShowIpfsGatewaySheet.test.tsx.snap # app/components/Views/ShowTokenIdSheet/__snapshots__/ShowTokenIdSheet.test.tsx.snap # app/components/Views/SimpleWebview/__snapshots__/index.test.tsx.snap # app/components/Views/SuccessErrorSheet/__snapshots__/index.test.tsx.snap # app/components/Views/TransactionsView/__snapshots__/index.test.tsx.snap # app/components/Views/TrendingView/components/ExploreSearchResults/ExploreSearchResults.test.tsx # app/components/Views/TrendingView/components/QuickActions/QuickActions.tsx # app/components/Views/TrendingView/components/SectionHeader/SectionHeader.test.tsx # app/components/Views/TrendingView/components/Sections/SectionTypes/PerpsExploreSection.tsx # app/components/Views/TrendingView/components/Sections/SectionTypes/SectionCard.tsx # app/components/Views/Wallet/__snapshots__/index.test.tsx.snap # app/components/Views/WalletRecovery/__snapshots__/index.test.tsx.snap Co-authored-by: dawnseeker8 <7315988+dawnseeker8@users.noreply.github.com>
Resolved. Merged the latest
Merge commit: |
- Updated `@metamask/bridge-status-controller` to version `^71.1.0` in `package.json` and removed the patch reference. - Updated `@metamask/eth-ledger-bridge-keyring` to version `^12.0.3`. - Updated `@metamask/keyring-sdk` to version `^2.1.1` and `@metamask/keyring-utils` to version `^3.3.1`. - Cleaned up `yarn.lock` by removing outdated references and consolidating dependency versions.
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit ab003dd. Configure here.
…patch reference - Changed the dependency for `@metamask/bridge-status-controller` in `package.json` to a patch reference. - Updated `yarn.lock` to reflect the new patch reference and its dependencies. - Added a new entry for the patch in `yarn.lock` to ensure proper resolution during installs.
Updated the dependency version of @metamask/eth-ledger-bridge-keyring in package.json and yarn.lock to ensure compatibility and access to the latest features and fixes.
This commit introduces a fallback non-null reject code in the SafePromise class of the react-native-ble-plx library. The change ensures that if a null code is passed to the promise rejection methods, a stable default code ("BleError") is used instead. This prevents potential NullPointerExceptions that could crash the host app when interacting with native modules. The reject methods have been updated to utilize this new safeCode method for handling reject codes.
|
🔍 Smart E2E Test Selection
click to see 🤖 AI reasoning detailsE2E Test Selection: Performance Test Selection: |
|
|
Tested on the latest build, the fix works as expected for Mon network. For Sei network, the 2 approval swap is successful, but "something went wrong" error is shown - created a separate ticket for this #30730 . Adding "qa passed" label. |




Description
Ledger hardware wallet users on Monad (and other chains / contracts without a matching Ledger plugin) were hitting a misleading "blind signing is not enabled" error when trying to complete gas-sponsored swaps, even though blind signing was enabled on the device.
this PR will resolve the issue #28589 to use new @metamask/eth-ledger-keyring-bridge`
Changelog
CHANGELOG entry: Fixed a misleading "blind signing is not enabled" error preventing Ledger hardware wallet users from completing gas-sponsored swaps on Monad and other chains without a matching Ledger plugin.
Related issues
Fixes: #28589
Manual testing steps
Screenshots/Recordings
Before
After
Pre-merge author checklist
Performance checks (if applicable)
trace()for usage andaddTokenfor an exampleFor performance guidelines and tooling, see the Performance Guide.
Pre-merge reviewer checklist
Note
Medium Risk
Changes only the Ledger hardware-wallet signing dependency path used for transactions/swaps; no local code review surface beyond the version bump.
Overview
Bumps
@metamask/eth-ledger-bridge-keyringfrom^12.0.2to^12.1.0(and refreshesyarn.lock) so Ledger signing uses the updated bridge stack—@metamask/keyring-sdk^2.1.1, explicit@ledgerhq/hw-transport, and newer@ledgerhq/*transport/device/error packages.There are no app source changes; behavior comes from the upgraded package. The intent is to stop a false “blind signing is not enabled” failure when Ledger users complete gas-sponsored swaps on Monad (and similar chains without a matching Ledger plugin), as in #28589.
Reviewed by Cursor Bugbot for commit b7d5043. Bugbot is set up for automated code reviews on this repo. Configure here.