Skip to content

Commit 9368c52

Browse files
Merge branch 'main' into feat/check-against-urls-with-path
2 parents ed9a836 + 567e202 commit 9368c52

File tree

218 files changed

+8362
-1264
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

218 files changed

+8362
-1264
lines changed

README.md

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ linkStyle default opacity:0.5
100100
controller_utils(["@metamask/controller-utils"]);
101101
delegation_controller(["@metamask/delegation-controller"]);
102102
earn_controller(["@metamask/earn-controller"]);
103-
eip-5792-middleware(["@metamask/eip-5792-middleware"])
103+
eip_5792_middleware(["@metamask/eip-5792-middleware"]);
104104
eip1193_permission_middleware(["@metamask/eip1193-permission-middleware"]);
105105
ens_controller(["@metamask/ens-controller"]);
106106
error_reporting_service(["@metamask/error-reporting-service"]);
@@ -142,6 +142,8 @@ linkStyle default opacity:0.5
142142
account_tree_controller --> base_controller;
143143
account_tree_controller --> accounts_controller;
144144
account_tree_controller --> keyring_controller;
145+
account_tree_controller --> multichain_account_service;
146+
account_tree_controller --> profile_sync_controller;
145147
accounts_controller --> base_controller;
146148
accounts_controller --> controller_utils;
147149
accounts_controller --> keyring_controller;
@@ -154,14 +156,17 @@ linkStyle default opacity:0.5
154156
assets_controllers --> base_controller;
155157
assets_controllers --> controller_utils;
156158
assets_controllers --> polling_controller;
159+
assets_controllers --> account_tree_controller;
157160
assets_controllers --> accounts_controller;
158161
assets_controllers --> approval_controller;
159162
assets_controllers --> keyring_controller;
163+
assets_controllers --> multichain_account_service;
160164
assets_controllers --> network_controller;
161165
assets_controllers --> permission_controller;
162166
assets_controllers --> phishing_controller;
163167
assets_controllers --> preferences_controller;
164168
assets_controllers --> transaction_controller;
169+
base_controller --> messenger;
165170
base_controller --> json_rpc_engine;
166171
bridge_controller --> base_controller;
167172
bridge_controller --> controller_utils;
@@ -192,9 +197,11 @@ linkStyle default opacity:0.5
192197
delegation_controller --> keyring_controller;
193198
earn_controller --> base_controller;
194199
earn_controller --> controller_utils;
195-
earn_controller --> accounts_controller;
200+
earn_controller --> account_tree_controller;
196201
earn_controller --> network_controller;
197202
earn_controller --> transaction_controller;
203+
eip_5792_middleware --> transaction_controller;
204+
eip_5792_middleware --> keyring_controller;
198205
eip1193_permission_middleware --> chain_agnostic_permission;
199206
eip1193_permission_middleware --> controller_utils;
200207
eip1193_permission_middleware --> json_rpc_engine;
@@ -244,6 +251,7 @@ linkStyle default opacity:0.5
244251
network_enablement_controller --> controller_utils;
245252
network_enablement_controller --> multichain_network_controller;
246253
network_enablement_controller --> network_controller;
254+
network_enablement_controller --> transaction_controller;
247255
notification_services_controller --> base_controller;
248256
notification_services_controller --> controller_utils;
249257
notification_services_controller --> keyring_controller;
@@ -263,7 +271,7 @@ linkStyle default opacity:0.5
263271
preferences_controller --> controller_utils;
264272
preferences_controller --> keyring_controller;
265273
profile_sync_controller --> base_controller;
266-
profile_sync_controller --> accounts_controller;
274+
profile_sync_controller --> address_book_controller;
267275
profile_sync_controller --> keyring_controller;
268276
rate_limit_controller --> base_controller;
269277
remote_feature_flag_controller --> base_controller;
@@ -277,13 +285,19 @@ linkStyle default opacity:0.5
277285
selected_network_controller --> json_rpc_engine;
278286
selected_network_controller --> network_controller;
279287
selected_network_controller --> permission_controller;
288+
shield_controller --> base_controller;
289+
shield_controller --> signature_controller;
290+
shield_controller --> transaction_controller;
280291
signature_controller --> base_controller;
281292
signature_controller --> controller_utils;
282293
signature_controller --> accounts_controller;
283294
signature_controller --> approval_controller;
284295
signature_controller --> keyring_controller;
285296
signature_controller --> logging_controller;
286297
signature_controller --> network_controller;
298+
subscription_controller --> base_controller;
299+
subscription_controller --> controller_utils;
300+
subscription_controller --> profile_sync_controller;
287301
token_search_discovery_controller --> base_controller;
288302
transaction_controller --> base_controller;
289303
transaction_controller --> controller_utils;

docs/controller-guidelines.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,19 +116,27 @@ A variable named `${controllerName}Metadata` should be defined (there is no need
116116
```typescript
117117
const keyringControllerMetadata = {
118118
vault: {
119+
// We don't want to include this in state logs because it contains sensitive key material.
120+
includeInStateLogs: false,
119121
// We want to persist this property so it's restored automatically, as we
120122
// cannot reconstruct it otherwise.
121123
persist: true,
122124
// This property can be used to identify a user, so we want to make sure we
123125
// do not include it in Sentry.
124126
anonymous: false,
127+
// This property is only used in the controller, not in the UI.
128+
usedInUi: false,
125129
},
126130
isUnlocked: {
131+
// This value is not sensitive, and is useful for diagnosing errors reported through support.
132+
includeInStateLogs: true
127133
// We do not need to persist this property in state, as we want to
128134
// initialize state with the wallet unlocked.
129135
persist: false,
130136
// This property has no PII, so it is safe to send to Sentry.
131137
anonymous: true,
138+
// This is used in the UI
139+
usedInUi: true,
132140
},
133141
};
134142

eslint-warning-thresholds.json

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -107,10 +107,10 @@
107107
"jsdoc/tag-lines": 2
108108
},
109109
"packages/base-controller/src/BaseController.test.ts": {
110-
"import-x/namespace": 18
110+
"import-x/namespace": 15
111111
},
112112
"packages/base-controller/src/next/BaseController.test.ts": {
113-
"import-x/namespace": 18
113+
"import-x/namespace": 13
114114
},
115115
"packages/build-utils/src/transforms/remove-fenced-code.test.ts": {
116116
"import-x/order": 1
@@ -328,8 +328,7 @@
328328
},
329329
"packages/remote-feature-flag-controller/src/remote-feature-flag-controller.ts": {
330330
"@typescript-eslint/prefer-readonly": 1,
331-
"jsdoc/check-tag-names": 2,
332-
"prettier/prettier": 1
331+
"jsdoc/check-tag-names": 2
333332
},
334333
"packages/remote-feature-flag-controller/src/utils/user-segmentation-utils.ts": {
335334
"jsdoc/tag-lines": 2

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@metamask/core-monorepo",
3-
"version": "549.0.0",
3+
"version": "564.0.0",
44
"private": true,
55
"description": "Monorepo for packages shared between MetaMask clients",
66
"repository": {

packages/account-tree-controller/CHANGELOG.md

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,40 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
## [0.17.0]
11+
12+
### Changed
13+
14+
- Single group sync events will not get enqueued anymore if a full sync is in progress ([#6651](https://github.com/MetaMask/core/pull/6651))
15+
- This prevents too many unnecessary storage fetches (which would prevent being rate limited).
16+
- This could rarely lead to inconsistencies until the next single updates or next full sync.
17+
18+
## [0.16.1]
19+
20+
### Added
21+
22+
- Export user storage paths for account syncing ([#6643](https://github.com/MetaMask/core/pull/6643))
23+
24+
### Changed
25+
26+
- Swallow group creation errors in backup and sync `createMultichainAccountGroup` ([#6642](https://github.com/MetaMask/core/pull/6642))
27+
28+
### Removed
29+
30+
- Remove full sync triggers when single sync operations are enqueued and `hasSyncedAtLeastOnce` is `false` ([#6634](https://github.com/MetaMask/core/pull/6634))
31+
32+
## [0.16.0]
33+
1034
### Changed
1135

36+
- **BREAKING:** Use `:getSelectedMultichainAccount` instead of `:getSelectedAccount` to compute currently selected account group ([#6608](https://github.com/MetaMask/core/pull/6608))
37+
- Coming from the old account model, a non-EVM account could have been selected and the lastly selected EVM account might not be using the same group index.
1238
- Bump `@metamask/utils` from `^11.4.2` to `^11.8.0` ([#6588](https://github.com/MetaMask/core/pull/6588))
39+
- Bump `@metamask/base-controller` from `^8.3.0` to `^8.4.0` ([#6632](https://github.com/MetaMask/core/pull/6632))
40+
41+
### Removed
42+
43+
- Remove use of `:getSelectedAccount` action ([#6608](https://github.com/MetaMask/core/pull/6608))
1344

1445
## [0.15.1]
1546

@@ -232,7 +263,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
232263
- Initial release ([#5847](https://github.com/MetaMask/core/pull/5847))
233264
- Grouping accounts into 3 main categories: Entropy source, Snap ID, keyring types.
234265

235-
[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/[email protected]
266+
[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/[email protected]
267+
[0.17.0]: https://github.com/MetaMask/core/compare/@metamask/[email protected]...@metamask/[email protected]
268+
[0.16.1]: https://github.com/MetaMask/core/compare/@metamask/[email protected]...@metamask/[email protected]
269+
[0.16.0]: https://github.com/MetaMask/core/compare/@metamask/[email protected]...@metamask/[email protected]
236270
[0.15.1]: https://github.com/MetaMask/core/compare/@metamask/[email protected]...@metamask/[email protected]
237271
[0.15.0]: https://github.com/MetaMask/core/compare/@metamask/[email protected]...@metamask/[email protected]
238272
[0.14.0]: https://github.com/MetaMask/core/compare/@metamask/[email protected]...@metamask/[email protected]

packages/account-tree-controller/package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@metamask/account-tree-controller",
3-
"version": "0.15.1",
3+
"version": "0.17.0",
44
"description": "Controller to group account together based on some pre-defined rules",
55
"keywords": [
66
"MetaMask",
@@ -47,7 +47,7 @@
4747
"test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch"
4848
},
4949
"dependencies": {
50-
"@metamask/base-controller": "^8.3.0",
50+
"@metamask/base-controller": "^8.4.0",
5151
"@metamask/snaps-sdk": "^9.0.0",
5252
"@metamask/snaps-utils": "^11.0.0",
5353
"@metamask/superstruct": "^3.1.0",
@@ -61,7 +61,7 @@
6161
"@metamask/auto-changelog": "^3.4.4",
6262
"@metamask/keyring-api": "^21.0.0",
6363
"@metamask/keyring-controller": "^23.1.0",
64-
"@metamask/multichain-account-service": "^0.8.0",
64+
"@metamask/multichain-account-service": "^0.10.0",
6565
"@metamask/profile-sync-controller": "^25.0.0",
6666
"@metamask/providers": "^22.1.0",
6767
"@metamask/snaps-controllers": "^14.0.1",

packages/account-tree-controller/src/AccountTreeController.test.ts

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,7 @@ function getAccountTreeControllerMessenger(
229229
allowedActions: [
230230
'AccountsController:listMultichainAccounts',
231231
'AccountsController:getAccount',
232-
'AccountsController:getSelectedAccount',
232+
'AccountsController:getSelectedMultichainAccount',
233233
'AccountsController:setSelectedAccount',
234234
'UserStorageController:getState',
235235
'UserStorageController:performGetStorage',
@@ -305,7 +305,7 @@ function setup({
305305
AccountsController: {
306306
accounts: InternalAccount[];
307307
listMultichainAccounts: jest.Mock;
308-
getSelectedAccount: jest.Mock;
308+
getSelectedMultichainAccount: jest.Mock;
309309
getAccount: jest.Mock;
310310
};
311311
UserStorageController: {
@@ -329,7 +329,7 @@ function setup({
329329
accounts,
330330
listMultichainAccounts: jest.fn(),
331331
getAccount: jest.fn(),
332-
getSelectedAccount: jest.fn(),
332+
getSelectedMultichainAccount: jest.fn(),
333333
},
334334
UserStorageController: {
335335
getState: jest.fn(),
@@ -366,13 +366,13 @@ function setup({
366366
mocks.AccountsController.getAccount,
367367
);
368368

369-
// Mock AccountsController:getSelectedAccount to return the first account
370-
mocks.AccountsController.getSelectedAccount.mockImplementation(
369+
// Mock AccountsController:getSelectedMultichainAccount to return the first account
370+
mocks.AccountsController.getSelectedMultichainAccount.mockImplementation(
371371
() => accounts[0] || MOCK_HD_ACCOUNT_1,
372372
);
373373
messenger.registerActionHandler(
374-
'AccountsController:getSelectedAccount',
375-
mocks.AccountsController.getSelectedAccount,
374+
'AccountsController:getSelectedMultichainAccount',
375+
mocks.AccountsController.getSelectedMultichainAccount,
376376
);
377377

378378
// Mock AccountsController:setSelectedAccount
@@ -750,7 +750,7 @@ describe('AccountTreeController', () => {
750750
keyrings: [MOCK_HD_KEYRING_1],
751751
});
752752

753-
mocks.AccountsController.getSelectedAccount.mockImplementation(
753+
mocks.AccountsController.getSelectedMultichainAccount.mockImplementation(
754754
() => MOCK_HD_ACCOUNT_1,
755755
);
756756

@@ -767,7 +767,7 @@ describe('AccountTreeController', () => {
767767

768768
mocks.AccountsController.accounts = [MOCK_HD_ACCOUNT_2];
769769
mocks.KeyringController.keyrings = [MOCK_HD_KEYRING_2];
770-
mocks.AccountsController.getSelectedAccount.mockImplementation(
770+
mocks.AccountsController.getSelectedMultichainAccount.mockImplementation(
771771
() => MOCK_HD_ACCOUNT_2,
772772
);
773773

@@ -1554,10 +1554,10 @@ describe('AccountTreeController', () => {
15541554

15551555
// Unregister existing handler and register new one BEFORE init
15561556
messenger.unregisterActionHandler(
1557-
'AccountsController:getSelectedAccount',
1557+
'AccountsController:getSelectedMultichainAccount',
15581558
);
15591559
messenger.registerActionHandler(
1560-
'AccountsController:getSelectedAccount',
1560+
'AccountsController:getSelectedMultichainAccount',
15611561
() => EMPTY_ACCOUNT_MOCK,
15621562
);
15631563

@@ -1581,17 +1581,17 @@ describe('AccountTreeController', () => {
15811581
keyrings: [MOCK_HD_KEYRING_1, MOCK_HD_KEYRING_2],
15821582
});
15831583

1584-
// Mock getSelectedAccount to return an account not in the tree BEFORE init
1584+
// Mock getSelectedMultichainAccount to return an account not in the tree BEFORE init
15851585
const unknownAccount: InternalAccount = {
15861586
...MOCK_HD_ACCOUNT_1,
15871587
id: 'unknown-account-id',
15881588
};
15891589

15901590
messenger.unregisterActionHandler(
1591-
'AccountsController:getSelectedAccount',
1591+
'AccountsController:getSelectedMultichainAccount',
15921592
);
15931593
messenger.registerActionHandler(
1594-
'AccountsController:getSelectedAccount',
1594+
'AccountsController:getSelectedMultichainAccount',
15951595
() => unknownAccount,
15961596
);
15971597

@@ -1609,18 +1609,18 @@ describe('AccountTreeController', () => {
16091609
expect(controller.getSelectedAccountGroup()).toBe(expectedGroupId1);
16101610
});
16111611

1612-
it('returns empty string when no wallets exist and getSelectedAccount returns EMPTY_ACCOUNT', () => {
1612+
it('returns empty string when no wallets exist and getSelectedMultichainAccount returns EMPTY_ACCOUNT', () => {
16131613
const { controller, messenger } = setup({
16141614
accounts: [],
16151615
keyrings: [],
16161616
});
16171617

1618-
// Mock getSelectedAccount to return EMPTY_ACCOUNT_MOCK (id is '') BEFORE init
1618+
// Mock getSelectedMultichainAccount to return EMPTY_ACCOUNT_MOCK (id is '') BEFORE init
16191619
messenger.unregisterActionHandler(
1620-
'AccountsController:getSelectedAccount',
1620+
'AccountsController:getSelectedMultichainAccount',
16211621
);
16221622
messenger.registerActionHandler(
1623-
'AccountsController:getSelectedAccount',
1623+
'AccountsController:getSelectedMultichainAccount',
16241624
() => EMPTY_ACCOUNT_MOCK,
16251625
);
16261626

@@ -2813,7 +2813,7 @@ describe('AccountTreeController', () => {
28132813
keyrings: [MOCK_HD_KEYRING_1],
28142814
});
28152815

2816-
mocks.AccountsController.getSelectedAccount.mockImplementation(
2816+
mocks.AccountsController.getSelectedMultichainAccount.mockImplementation(
28172817
() => MOCK_HD_ACCOUNT_1,
28182818
);
28192819

@@ -2842,7 +2842,7 @@ describe('AccountTreeController', () => {
28422842
keyrings: [MOCK_HD_KEYRING_1],
28432843
});
28442844

2845-
mocks.AccountsController.getSelectedAccount.mockImplementation(
2845+
mocks.AccountsController.getSelectedMultichainAccount.mockImplementation(
28462846
() => MOCK_HD_ACCOUNT_1,
28472847
);
28482848

@@ -2865,7 +2865,7 @@ describe('AccountTreeController', () => {
28652865

28662866
mocks.AccountsController.accounts = [MOCK_HD_ACCOUNT_2];
28672867
mocks.KeyringController.keyrings = [MOCK_HD_KEYRING_2];
2868-
mocks.AccountsController.getSelectedAccount.mockImplementation(
2868+
mocks.AccountsController.getSelectedMultichainAccount.mockImplementation(
28692869
() => MOCK_HD_ACCOUNT_2,
28702870
);
28712871

packages/account-tree-controller/src/AccountTreeController.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -828,7 +828,7 @@ export class AccountTreeController extends BaseController<
828828
[walletId: AccountWalletId]: AccountWalletObject;
829829
}): AccountGroupId | '' {
830830
const selectedAccount = this.messagingSystem.call(
831-
'AccountsController:getSelectedAccount',
831+
'AccountsController:getSelectedMultichainAccount',
832832
);
833833
if (selectedAccount && selectedAccount.id) {
834834
const accountMapping = this.#accountIdToContext.get(selectedAccount.id);

0 commit comments

Comments
 (0)