Skip to content

Commit

Permalink
chore: Update accounts controller to v23 and related packages (transa…
Browse files Browse the repository at this point in the history
…ction controller etc) (#13436)

<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

This PR updates the
[AccountsController](https://github.com/MetaMask/core/blob/main/packages/accounts-controller/CHANGELOG.md#2310)
and the
[TransactionController](https://github.com/MetaMask/core/blob/main/packages/transaction-controller/CHANGELOG.md#4510).
These are the two major updates however there are a few smaller peer dep
updates as well. Here is a description of the changes...

### "@metamask/accounts-controller": "^21.0.0" -> 23.1.0"
-
[changelog](https://github.com/MetaMask/core/blob/main/packages/accounts-controller/CHANGELOG.md#2310)
- Breaking changes:
- BREAKING: Now requires
SnapKeyring:account{AssetList,Balances,Transactions}Updated events to be
registered on the messenger (MetaMask/core#5190)
- BREAKING: Bump @metamask/snaps-controllers peer dependency from ^9.7.0
to ^9.19.0 (MetaMask/core#5265)
    - Bump @metamask/base-controller from ^7.1.1 to ^8.0.0
- Non breaking changes:
- Bump @metamask/keyring-api" from ^16.1.0 to ^17.0.0
(MetaMask/core#5280)
- Bump @metamask/eth-snap-keyring from ^9.1.1 to ^10.0.0
(MetaMask/core#5280)
- Bump @metamask/snaps-sdk from ^6.7.0 to ^6.17.1
(MetaMask/core#5220),
(MetaMask/core#5265)
- Bump @metamask/snaps-utils from ^8.9.0 to ^8.10.0
(MetaMask/core#5265)

### "@metamask/transaction-controller": "^43.0.0" -> 45.1.0
-
[changelog](https://github.com/MetaMask/core/blob/main/packages/transaction-controller/CHANGELOG.md#4510)
- Breaking changes:
- BREAKING: Bump @metamask/accounts-controller peer dependency from
^22.0.0 to ^23.0.0

### "@metamask/keyring-api": "^13.0.0" -> 17.0.0
-
[changelog](https://github.com/MetaMask/accounts/blob/main/packages/keyring-api/CHANGELOG.md#1700)
- Breaking changes:
- BREAKING: Make CaipAssetType type more restritive
(MetaMask/accounts#150) It used to be a string
but it has been restricted with a template literal type that matches
CAIP-19 asset type.
- BREAKING: Make specific *AccountStruct.scopes more strict
(MetaMask/accounts#159)
- BREAKING: Remove CAIP redefinitions
(MetaMask/accounts#167) We now rely on CAIP
definitions coming @metamask/utils.
- BREAKING: Enforce that scopes contains CAIP-2 chain IDs
(MetaMask/accounts#165) Initially scopes
accepted CAIP-2 namespaces as well to address the EVM EOA accounts that
supports all EVM chains. This has been dropped in favor of eip155:0
scope.
- BREAKING: Rename *Scopes enums to *Scope
(MetaMask/accounts#165)
- BREAKING: Use CaipAccountId for ResolvedAccountAddress.address
(MetaMask/accounts#186) This was missing from
SIP-26, but we expect this address to be CAIP-10 compliant.

### "@metamask/keyring-internal-api": "^2.0.0" -> 4.0.2
-
[changelog](https://github.com/MetaMask/accounts/blob/main/packages/keyring-internal-api/CHANGELOG.md#402)
- Breaking changes
- BREAKING: Bump @metamask/keyring-api from ^14.0.0 to ^15.0.0
(MetaMask/accounts#160) The scopes from each
*AccountStruct types is now more strict which impact all
Internal*AccountStruct types.
- BREAKING: Bump @metamask/keyring-api from ^15.0.0 to ^16.0.0
(MetaMask/accounts#172)
The scopes from each *AccountStruct types is now more strict (remove
support of CAIP-2 namespaces) which impact all Internal*AccountStruct
types.
- Bump @metamask/keyring-api from ^16.1.0 to ^17.0.0
(MetaMask/accounts#192)

### "@metamask/eth-snap-keyring": "^7.1.0" -> 10.0.0
-
[changelog](https://github.com/MetaMask/accounts/blob/main/packages/keyring-snap-bridge/CHANGELOG.md)
- Breaking changes:
- BREAKING: Bump @metamask/keyring-api from ^12.0.0 to ^13.0.0
(MetaMask/accounts#101)
This change was not properly reported as breaking on the 7.1.0.
KeyringAccount and InternalAccount have a new required field (scopes)
and are part of the public API.
- BREAKING: Bump @metamask/keyring-internal-api from ^1.0.0 to ^2.0.0
(MetaMask/accounts#135)
This change was not properly reported as breaking on the 7.1.0.
InternalAccount extends KeyringAccount which has a new required field
(scopes) and is part of the public API.
- BREAKING: Bump @metamask/keyring-snap-internal-client from ^1.0.0 to
^2.0.0 (MetaMask/accounts#135)
This change was not properly reported as breaking on the 7.1.0.
KeyringAccount has a new required field (scopes) and is part of the
public API.
- BREAKING: Use Messenger instead of SnapsController
(MetaMask/accounts#152)
This allows to break the runtime dependency we had with some snaps-*
pacakges.
- BREAKING: Make scopes more strict
(MetaMask/accounts#159)
We now use specific *AccountStucts when checking created/updated
accounts to make the scopes sent by the Snap are valid regarding their
account type definition.
- BREAKING: Use CaipAccountId for ResolvedAccountAddress.address
(MetaMask/accounts#186)
This was missing from SIP-26, but we expect this address to be CAIP-10
compliant.

### "@metamask/snaps-sdk": "^6.13.0" -> 6.17.1
-
[changelog](https://github.com/MetaMask/snaps/blob/main/packages/snaps-sdk/CHANGELOG.md#6171)
- no breaking changes

### "@metamask/snaps-utils": "^8.6.1" -> ^8.10.0
-
[changelog](https://github.com/MetaMask/snaps/blob/main/packages/snaps-utils/CHANGELOG.md#8100)
- no breaking changes

## **Related issues**

Fixes: #13374
Fixes: #13377

## **Manual testing steps**

#### Testing snap accounts
1. ensure you are building metamask flask by setting the value of
`METAMASK_BUILD_TYPE` to `flask` in your `.js.env`
2. source .js.env
3. yarn setup
4. yarn start:ios
5. create/import a wallet
6. click on the selected account at the top of the home page
7. click on the Add account button
8. then click the Add Solana account (Beta) button
9. a popup with a suggested name should appeaer
10. click OK, the account should now be added to your account list. if
you have a balance on this address then it should show in the portfolio
view.
11. repeat the above steps with the Bitcoin and Bitcoin testnet account

#### Testing transactions
1. ensure you are NOT building flask by setting the value of
`METAMASK_BUILD_TYPE` to `main` in your `.js.env`
2. source .js.env
3. yarn setup
4. yarn start:ios 
5. import an account that has funds
6. click on the selected account at the top of the screen and the
account list should open
7. then click on the add account button, then click add account
8. a new eth account should appear in your wallet
9. click on main bottom tab navigator icon which should open a list of
actions, select Send.
10. the Send flow should open.
11. set your from account to the account that has funds and the to
account to your newly created account.
12. type in a valid amount then go through the rest of the send flow
13. in the end the transaction should go through.
14. the account balances on the home page should be updated

## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **Before**

<!-- [screenshots/recordings] -->

### **After**

On-boarding and Account Creation Flow


https://github.com/user-attachments/assets/2ccd8fb4-4857-4a99-ab52-cdb071bd0447

Send flow


https://github.com/user-attachments/assets/da81d49c-b472-49a7-83c4-1d1046521072


## **Pre-merge author checklist**

- [x] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I’ve included tests if applicable
- [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.
  • Loading branch information
owencraston authored Feb 13, 2025
1 parent 665035f commit 42263b2
Show file tree
Hide file tree
Showing 24 changed files with 946 additions and 316 deletions.
4 changes: 2 additions & 2 deletions app/components/Views/RevealPrivateCredential/index.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import { backgroundState } from '../../../util/test/initial-root-state';
import { RevealPrivateCredential } from './';
import { ThemeContext, mockTheme } from '../../../util/theme';
import { RevealSeedViewSelectorsIDs } from '../../../../e2e/selectors/Settings/SecurityAndPrivacy/RevealSeedView.selectors';
import { EthAccountType, EthMethod, EthScopes } from '@metamask/keyring-api';
import { EthAccountType, EthMethod, EthScope } from '@metamask/keyring-api';
import { KeyringTypes } from '@metamask/keyring-controller';

jest.mock('react-redux', () => ({
Expand Down Expand Up @@ -156,7 +156,7 @@ describe('RevealPrivateCredential', () => {
someOption: 'optionValue',
anotherOption: 42,
},
scopes: [EthScopes.Namespace],
scopes: [EthScope.Eoa],
methods: [
EthMethod.PersonalSign,
EthMethod.SignTransaction,
Expand Down
17 changes: 11 additions & 6 deletions app/core/Engine/Engine.ts
Original file line number Diff line number Diff line change
Expand Up @@ -231,6 +231,11 @@ import {
SnapControllerStateChangeEvent,
SnapControllerUpdateSnapStateAction,
} from './controllers/SnapController/constants';
import {
SnapKeyringAccountAssetListUpdatedEvent,
SnapKeyringAccountBalancesUpdatedEvent,
SnapKeyringAccountTransactionsUpdatedEvent,
} from '../SnapKeyring/constants';

const NON_EMPTY = 'NON_EMPTY';

Expand Down Expand Up @@ -377,14 +382,16 @@ export class Engine {
});

// Create AccountsController
// @ts-expect-error TODO: Resolve mismatch between base-controller versions.
const accountsControllerMessenger: AccountsControllerMessenger =
this.controllerMessenger.getRestricted({
name: 'AccountsController',
allowedEvents: [
SnapControllerStateChangeEvent,
'KeyringController:accountRemoved',
'KeyringController:stateChange',
SnapKeyringAccountAssetListUpdatedEvent,
SnapKeyringAccountBalancesUpdatedEvent,
SnapKeyringAccountTransactionsUpdatedEvent,
],
allowedActions: [
'KeyringController:getAccounts',
Expand Down Expand Up @@ -620,7 +627,7 @@ export class Engine {

///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps)
const snapKeyringBuildMessenger = this.controllerMessenger.getRestricted({
name: 'SnapKeyringBuilder',
name: 'SnapKeyring',
allowedActions: [
'ApprovalController:addRequest',
'ApprovalController:acceptRequest',
Expand All @@ -635,12 +642,12 @@ export class Engine {
AccountsControllerSetSelectedAccountAction,
AccountsControllerGetAccountByAddressAction,
AccountsControllerSetAccountNameAction,
SnapControllerHandleRequestAction,
SnapControllerGetSnapAction,
],
allowedEvents: [],
});

const getSnapController = () => this.snapController;

// Necessary to persist the keyrings and update the accounts both within the keyring controller and accounts controller
const persistAndUpdateAccounts = async () => {
await this.keyringController.persistAllKeyrings();
Expand All @@ -650,7 +657,6 @@ export class Engine {
additionalKeyrings.push(
snapKeyringBuilder(
snapKeyringBuildMessenger,
getSnapController,
persistAndUpdateAccounts,
(address) => this.removeAccount(address),
),
Expand Down Expand Up @@ -1265,7 +1271,6 @@ export class Engine {
},
isSimulationEnabled: () =>
preferencesController.state.useTransactionSimulations,
// @ts-expect-error TODO: Resolve mismatch between base-controller versions.
messenger: this.controllerMessenger.getRestricted({
name: 'TransactionController',
allowedActions: [
Expand Down
11 changes: 10 additions & 1 deletion app/core/Engine/controllers/AccountsController/utils.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,12 @@ import { AGREED, METRICS_OPT_IN } from '../../../../constants/storage';
import StorageWrapper from '../../../../store/storage-wrapper';
import { logAccountsControllerCreation } from './logger';
import { SnapControllerStateChangeEvent } from '../SnapController/constants';
import { SnapKeyringEvents } from '@metamask/eth-snap-keyring';
import {
SnapKeyringAccountAssetListUpdatedEvent,
SnapKeyringAccountBalancesUpdatedEvent,
SnapKeyringAccountTransactionsUpdatedEvent,
} from '../../../SnapKeyring/constants';

jest.mock('@sentry/react-native', () => ({
withScope: jest.fn(),
Expand All @@ -45,14 +51,17 @@ describe('accountControllersUtils', () => {
| SnapStateChange
| KeyringControllerAccountRemovedEvent
| KeyringControllerStateChangeEvent
| SnapKeyringEvents
>();
// @ts-expect-error TODO: Resolve mismatch between base-controller versions.
accountsControllerMessenger = globalMessenger.getRestricted({
name: 'AccountsController',
allowedEvents: [
SnapControllerStateChangeEvent,
'KeyringController:accountRemoved',
'KeyringController:stateChange',
SnapKeyringAccountAssetListUpdatedEvent,
SnapKeyringAccountBalancesUpdatedEvent,
SnapKeyringAccountTransactionsUpdatedEvent,
],
allowedActions: [
'KeyringController:getAccounts',
Expand Down
4 changes: 3 additions & 1 deletion app/core/Engine/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -180,6 +180,7 @@ import {
RemoteFeatureFlagControllerActions,
RemoteFeatureFlagControllerEvents,
} from '@metamask/remote-feature-flag-controller/dist/remote-feature-flag-controller.cjs';
import { SnapKeyringEvents } from '@metamask/eth-snap-keyring';

/**
* Controllers that area always instantiated
Expand Down Expand Up @@ -291,7 +292,8 @@ type GlobalEvents =
| SelectedNetworkControllerEvents
| SmartTransactionsControllerEvents
| AssetsContractControllerEvents
| RemoteFeatureFlagControllerEvents;
| RemoteFeatureFlagControllerEvents
| SnapKeyringEvents;

// TODO: Abstract this into controller utils for TransactionController
export interface TransactionEventPayload {
Expand Down
14 changes: 7 additions & 7 deletions app/core/Multichain/test/utils.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ import {
BtcAccountType,
EthMethod,
BtcMethod,
EthScopes,
BtcScopes,
SolScopes,
EthScope,
BtcScope,
SolScope,
SolAccountType,
SolMethod,
} from '@metamask/keyring-api';
Expand Down Expand Up @@ -34,7 +34,7 @@ const SOL_ADDRESS = '7EcDhSYGxXyscszYEp35KHN8vvw3svAuLKTzXwCFLtV';
const mockEthEOAAccount: InternalAccount = {
address: MOCK_ETH_ADDRESS,
id: '1',
scopes: [EthScopes.Namespace],
scopes: [EthScope.Eoa],
metadata: {
name: 'Eth Account 1',
importTime: 1684232000456,
Expand All @@ -56,7 +56,7 @@ const mockEthEOAAccount: InternalAccount = {
const mockEthERC4337Account: InternalAccount = {
address: '0xC4966c0D659D99699BFD7EB54D8fafEE40e4a756',
id: '1',
scopes: [EthScopes.Namespace],
scopes: [EthScope.Eoa],
metadata: {
name: 'Eth Account ERC4337 1',
importTime: 1684232000456,
Expand All @@ -78,7 +78,7 @@ const mockEthERC4337Account: InternalAccount = {
const mockBTCAccount: InternalAccount = {
address: MOCK_BTC_MAINNET_ADDRESS,
id: '1',
scopes: [BtcScopes.Namespace],
scopes: [BtcScope.Mainnet],
metadata: {
name: 'Bitcoin Account',
importTime: 1684232000456,
Expand Down Expand Up @@ -114,7 +114,7 @@ const mockSolAccount: InternalAccount = {
enabled: true,
},
},
scopes: [SolScopes.Mainnet, SolScopes.Testnet, SolScopes.Devnet],
scopes: [SolScope.Mainnet, SolScope.Testnet, SolScope.Devnet],
};

describe('MultiChain utils', () => {
Expand Down
6 changes: 2 additions & 4 deletions app/core/SnapKeyring/SnapKeyring.test.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { Messenger } from '@metamask/base-controller';
import { EthAccountType, EthScopes, KeyringEvent } from '@metamask/keyring-api';
import { EthAccountType, EthScope, KeyringEvent } from '@metamask/keyring-api';
import { InternalAccount } from '@metamask/keyring-internal-api';
import { snapKeyringBuilder } from './SnapKeyring';
import {
Expand All @@ -15,7 +15,6 @@ const mockEndFlow = jest.fn();
const mockGetAccounts = jest.fn();
const mockSnapId: SnapId = 'snapId' as SnapId;
const mockSnapName = 'mock-snap';
const mockSnapController = jest.fn();
const mockPersisKeyringHelper = jest.fn();
const mockSetSelectedAccount = jest.fn();
const mockRemoveAccountHelper = jest.fn();
Expand All @@ -35,7 +34,7 @@ const mockAccount = {
};
const mockInternalAccount: InternalAccount = {
...mockAccount,
scopes: [EthScopes.Namespace],
scopes: [EthScope.Eoa],
metadata: {
snap: {
enabled: true,
Expand Down Expand Up @@ -109,7 +108,6 @@ const createControllerMessenger = ({
const createSnapKeyringBuilder = () =>
snapKeyringBuilder(
createControllerMessenger(),
mockSnapController,
mockPersisKeyringHelper,
mockRemoveAccountHelper,
);
Expand Down
11 changes: 5 additions & 6 deletions app/core/SnapKeyring/SnapKeyring.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,13 @@
import { SnapKeyring } from '@metamask/eth-snap-keyring';
import type { SnapController } from '@metamask/snaps-controllers';
import { SnapKeyringBuilderMessenger } from './types';
import Logger from '../../util/Logger';
import { showAccountNameSuggestionDialog } from './utils/showDialog';
import { SnapKeyringBuilderMessenger } from './types';

/**
* Constructs a SnapKeyring builder with specified handlers for managing snap accounts.
* - Here is the equivalent function on the extension: https://github.com/MetaMask/metamask-extension/blob/develop/app/scripts/lib/snap-keyring/snap-keyring.ts#L111
*
* @param controllerMessenger - The controller messenger instance.
* @param getSnapController - A function that retrieves the Snap Controller instance.
* @param persistKeyringHelper - A function that persists all keyrings in the vault.
* @param removeAccountHelper - A function to help remove an account based on its address.
* @returns The constructed SnapKeyring builder instance with the following methods:
Expand All @@ -21,13 +19,14 @@ import { showAccountNameSuggestionDialog } from './utils/showDialog';
*/
export const snapKeyringBuilder = (
controllerMessenger: SnapKeyringBuilderMessenger,
getSnapController: () => SnapController,

persistKeyringHelper: () => Promise<void>,
removeAccountHelper: (address: string) => Promise<unknown>,
): { (): SnapKeyring; type: string } => {
const builder = () =>
new SnapKeyring(getSnapController(), {
addressExists: async (address) =>
// @ts-expect-error TODO: Resolve mismatch between base-controller versions.
new SnapKeyring(controllerMessenger, {
addressExists: async (address: string) =>
(
await controllerMessenger.call('KeyringController:getAccounts')
).includes(address.toLowerCase()),
Expand Down
15 changes: 15 additions & 0 deletions app/core/SnapKeyring/constants.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import {
SnapKeyringAccountAssetListUpdatedEvent as SnapKeyringAccountAssetListUpdatedEventType,
SnapKeyringAccountBalancesUpdatedEvent as SnapKeyringAccountBalancesUpdatedEventType,
SnapKeyringAccountTransactionsUpdatedEvent as SnapKeyringAccountTransactionsUpdatedEventType,
} from '@metamask/eth-snap-keyring';

// Events
export const SnapKeyringAccountAssetListUpdatedEvent: SnapKeyringAccountAssetListUpdatedEventType['type'] =
'SnapKeyring:accountAssetListUpdated';

export const SnapKeyringAccountBalancesUpdatedEvent: SnapKeyringAccountBalancesUpdatedEventType['type'] =
'SnapKeyring:accountBalancesUpdated';

export const SnapKeyringAccountTransactionsUpdatedEvent: SnapKeyringAccountTransactionsUpdatedEventType['type'] =
'SnapKeyring:accountTransactionsUpdated';
10 changes: 8 additions & 2 deletions app/core/SnapKeyring/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,10 @@ import type {
ShowSuccess,
StartFlow,
} from '@metamask/approval-controller';
import {
HandleSnapRequest as SnapControllerHandleRequestActionType,
GetSnap as SnapControllerGetSnapActionType,
} from '@metamask/snaps-controllers';

export type SnapKeyringBuilderAllowActions =
| StartFlow
Expand All @@ -31,10 +35,12 @@ export type SnapKeyringBuilderAllowActions =
| GetSubjectMetadata
| AccountsControllerSetSelectedAccountAction
| AccountsControllerGetAccountByAddressAction
| AccountsControllerSetAccountNameAction;
| AccountsControllerSetAccountNameAction
| SnapControllerHandleRequestActionType
| SnapControllerGetSnapActionType;

export type SnapKeyringBuilderMessenger = RestrictedMessenger<
'SnapKeyringBuilder',
'SnapKeyring',
SnapKeyringBuilderAllowActions,
never,
SnapKeyringBuilderAllowActions['type'],
Expand Down
10 changes: 7 additions & 3 deletions app/selectors/accountsController.test.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
import { AccountsControllerState } from '@metamask/accounts-controller';
import { captureException } from '@sentry/react-native';
import { Hex, isValidChecksumAddress } from '@metamask/utils';
import { BtcAccountType } from '@metamask/keyring-api';
import {
BtcAccountType,
EthAccountType,
EthScope,
} from '@metamask/keyring-api';
import { InternalAccount } from '@metamask/keyring-internal-api';
import StorageWrapper from '../store/storage-wrapper';
import {
Expand Down Expand Up @@ -85,7 +89,7 @@ describe('Accounts Controller Selectors', () => {
address: '0xc4966c0d659d99699bfd7eb54d8fafee40e4a756',
id: expectedUuid2,
options: {},
scopes: ['eip155'],
scopes: [EthScope.Eoa],
metadata: {
name: 'Account 2',
importTime: 1684232000456,
Expand All @@ -100,7 +104,7 @@ describe('Accounts Controller Selectors', () => {
'eth_signTypedData_v3',
'eth_signTypedData_v4',
],
type: 'eip155:eoa',
type: EthAccountType.Eoa,
});
});
it('throws an error if the selected account ID does not exist', () => {
Expand Down
4 changes: 2 additions & 2 deletions app/store/migrations/036.test.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { EthAccountType, EthMethod, EthScopes } from '@metamask/keyring-api';
import { EthAccountType, EthMethod, EthScope } from '@metamask/keyring-api';
import { InternalAccount } from '@metamask/keyring-internal-api';
import migrate, { Identity } from './036';
import { captureException } from '@sentry/react-native';
Expand Down Expand Up @@ -50,7 +50,7 @@ function expectedInternalAccount(
): InternalAccount {
return {
address,
scopes: [EthScopes.Namespace],
scopes: [EthScope.Eoa],
id: getUUIDFromAddressOfNormalAccount(address),
metadata: {
name: nickname,
Expand Down
4 changes: 2 additions & 2 deletions app/store/migrations/036.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { EthAccountType, EthScopes } from '@metamask/keyring-api';
import { EthAccountType, EthScope } from '@metamask/keyring-api';
import { InternalAccount } from '@metamask/keyring-internal-api';
import { isObject, hasProperty } from '@metamask/utils';
import { captureException } from '@sentry/react-native';
Expand Down Expand Up @@ -113,7 +113,7 @@ function createInternalAccountsForAccountsController(

accounts[expectedId] = {
address: identity.address,
scopes: [EthScopes.Namespace],
scopes: [EthScope.Eoa],
id: expectedId,
options: {},
metadata: {
Expand Down
Loading

0 comments on commit 42263b2

Please sign in to comment.