Skip to content

Commit

Permalink
Merge branch 'main' into feat/integrate-multichain-assets-controller
Browse files Browse the repository at this point in the history
  • Loading branch information
sahar-fehri authored Feb 4, 2025
2 parents c717e7f + 11addf5 commit 89b1d23
Show file tree
Hide file tree
Showing 98 changed files with 3,181 additions and 972 deletions.
5 changes: 5 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,11 @@ offscreen/scripts/offscreen.ts @MetaMask/snaps-devs
# make all such communication opt IN versus opt OUT.
privacy-snapshot.json @MetaMask/extension-privacy-reviewers


# A machine-generated file that tracks circular dependencies in the codebase.
# It is updated using yarn circular-deps:update
development/circular-deps.jsonc @MetaMask/extension-security-team @HowardBraham @dbrans

# The CODEOWNERS file constitutes an agreement amongst organization
# admins and maintainers to restrict approval capabilities to a subset
# of contributors. Modifications to this file result in a modification of
Expand Down
28 changes: 28 additions & 0 deletions .github/workflows/create-release-pr.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
name: Create Release Pull Request

on:
workflow_dispatch:
inputs:
base-branch:
description: 'The base branch, tag, or SHA for git operations and the pull request.'
required: true
semver-version:
description: 'A semantic version. eg: x.x.x'
required: true
previous-version-tag:
description: 'Previous release version tag. eg: v7.7.0'
required: true
jobs:
create-release-pr:
uses: MetaMask/github-tools/.github/workflows/create-release-pr.yml@4f594ca7d90378da66b7efce987eff379934524b
with:
platform: extension
base-branch: ${{ inputs.base-branch }}
semver-version: ${{ inputs.semver-version }}
previous-version-tag: ${{ inputs.previous-version-tag }}
secrets:
# This token needs write permissions to metamask-extension & read permissions to metamask-planning
github-token: ${{ secrets.PR_TOKEN }}
permissions:
contents: write
pull-requests: write
4 changes: 4 additions & 0 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,10 @@ jobs:
name: Test lint
uses: ./.github/workflows/test-lint.yml

test-circular-deps:
name: Test circular deps
uses: ./.github/workflows/test-circular-deps.yml

test-lint-changelog:
name: Test lint changelog
uses: ./.github/workflows/test-lint-changelog.yml
Expand Down
18 changes: 18 additions & 0 deletions .github/workflows/test-circular-deps.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
name: Test Circular Dependencies

on:
workflow_call:

jobs:
test-circular-deps:
name: Test circular dependencies
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Setup environment
uses: metamask/github-tools/.github/actions/setup-environment@main

- name: Check circular dependencies
run: yarn circular-deps:check
15 changes: 15 additions & 0 deletions .madgerc
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"detectiveOptions": {
"es6": {
"skipTypeImports": true
},
"ts": {
"skipTypeImports": true,
"skipAsyncImports": true
},
"tsx": {
"skipTypeImports": true,
"skipAsyncImports": true
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,50 @@ index 017fb94055b64f99c75f8d54b763a501bdd03e97..34396ba143e3ebcb04fa2c80f7a35d1a
// We want to ensure that the CID is v1 (https://docs.ipfs.io/concepts/content-addressing/#identifier-formats)
// because most cid v0s appear to be incompatible with IPFS subdomains
return {
diff --git a/dist/TokensController.cjs b/dist/TokensController.cjs
index de7efda960aaa0bb7c06e0b76680d4057cf7ac6c..062950cad55f263b248579b4a23a1881723ccbfc 100644
--- a/dist/TokensController.cjs
+++ b/dist/TokensController.cjs
@@ -77,7 +77,7 @@ class TokensController extends base_controller_1.BaseController {
* @param options.chainId - The chain ID of the current network.
* @param options.provider - Network provider.
* @param options.state - Initial state to set on this controller.
- * @param options.messenger - The controller messenger.
+ * @param options.messenger - The messenger.
*/
constructor({ chainId: initialChainId, provider, state, messenger, }) {
super({
@@ -210,13 +210,14 @@ class TokensController extends base_controller_1.BaseController {
const releaseLock = await __classPrivateFieldGet(this, _TokensController_mutex, "f").acquire();
const { allTokens, ignoredTokens, allDetectedTokens } = this.state;
const importedTokensMap = {};
- let interactingChainId;
+ let interactingChainId = __classPrivateFieldGet(this, _TokensController_chainId, "f");
if (networkClientId) {
interactingChainId = this.messagingSystem.call('NetworkController:getNetworkClientById', networkClientId).configuration.chainId;
}
// Used later to dedupe imported tokens
const newTokensMap = [
- ...(allTokens[interactingChainId ?? __classPrivateFieldGet(this, _TokensController_chainId, "f")]?.[__classPrivateFieldGet(this, _TokensController_instances, "m", _TokensController_getSelectedAccount).call(this).address] || []),
+ ...(allTokens[interactingChainId]?.[__classPrivateFieldGet(this, _TokensController_instances, "m", _TokensController_getSelectedAccount).call(this).address] ||
+ []),
...tokensToImport,
].reduce((output, token) => {
output[token.address] = token;
@@ -251,11 +252,13 @@ class TokensController extends base_controller_1.BaseController {
interactingChainId,
});
this.update((state) => {
- state.tokens = newTokens;
+ if (interactingChainId === __classPrivateFieldGet(this, _TokensController_chainId, "f")) {
+ state.tokens = newTokens;
+ state.detectedTokens = newDetectedTokens;
+ state.ignoredTokens = newIgnoredTokens;
+ }
state.allTokens = newAllTokens;
- state.detectedTokens = newDetectedTokens;
state.allDetectedTokens = newAllDetectedTokens;
- state.ignoredTokens = newIgnoredTokens;
state.allIgnoredTokens = newAllIgnoredTokens;
});
}
10 changes: 9 additions & 1 deletion app/_locales/en/messages.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import {
PPOMController,
PPOMControllerMessenger,
} from '@metamask/ppom-validator';
import { ControllerMessenger } from '@metamask/base-controller';
import { Messenger } from '@metamask/base-controller';
import { PreferencesController } from '../../controllers/preferences-controller';
import { buildControllerInitRequestMock, CHAIN_ID_MOCK } from '../test/utils';
import { ControllerInitRequest } from '../types';
Expand Down Expand Up @@ -41,7 +41,7 @@ function buildControllerMock(
function buildInitRequestMock(): jest.Mocked<
ControllerInitRequest<PPOMControllerMessenger, PPOMControllerInitMessenger>
> {
const baseControllerMessenger = new ControllerMessenger();
const baseControllerMessenger = new Messenger();

const requestMock = {
...buildControllerInitRequestMock(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import {
TransactionControllerMessenger,
TransactionControllerOptions,
} from '@metamask/transaction-controller';
import { ControllerMessenger } from '@metamask/base-controller';
import { Messenger } from '@metamask/base-controller';
import { NetworkController } from '@metamask/network-controller';
import { buildControllerInitRequestMock, CHAIN_ID_MOCK } from '../test/utils';
import {
Expand Down Expand Up @@ -43,7 +43,7 @@ function buildInitRequestMock(): jest.Mocked<
TransactionControllerInitMessenger
>
> {
const baseControllerMessenger = new ControllerMessenger();
const baseControllerMessenger = new Messenger();

const requestMock = {
...buildControllerInitRequestMock(),
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { ControllerMessenger } from '@metamask/base-controller';
import { Messenger } from '@metamask/base-controller';
import {
NetworkControllerGetNetworkClientByIdAction,
NetworkControllerNetworkDidChangeEvent,
Expand All @@ -19,9 +19,9 @@ export type PPOMControllerInitMessenger = ReturnType<
>;

export function getPPOMControllerMessenger(
controllerMessenger: ControllerMessenger<MessengerActions, MessengerEvents>,
messenger: Messenger<MessengerActions, MessengerEvents>,
): PPOMControllerMessenger {
return controllerMessenger.getRestricted({
return messenger.getRestricted({
name: 'PPOMController',
allowedEvents: [
'NetworkController:stateChange',
Expand All @@ -32,9 +32,9 @@ export function getPPOMControllerMessenger(
}

export function getPPOMControllerInitMessenger(
controllerMessenger: ControllerMessenger<MessengerActions, MessengerEvents>,
messenger: Messenger<MessengerActions, MessengerEvents>,
) {
return controllerMessenger.getRestricted({
return messenger.getRestricted({
name: 'PPOMControllerInit',
allowedEvents: ['PreferencesController:stateChange'],
allowedActions: [],
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { AccountsControllerGetSelectedAccountAction } from '@metamask/accounts-controller';
import { ApprovalControllerActions } from '@metamask/approval-controller';
import { ControllerMessenger } from '@metamask/base-controller';
import { Messenger } from '@metamask/base-controller';
import {
NetworkControllerFindNetworkClientIdByChainIdAction,
NetworkControllerGetEIP1559CompatibilityAction,
Expand Down Expand Up @@ -54,9 +54,9 @@ export type TransactionControllerInitMessenger = ReturnType<
>;

export function getTransactionControllerMessenger(
controllerMessenger: ControllerMessenger<MessengerActions, MessengerEvents>,
messenger: Messenger<MessengerActions, MessengerEvents>,
): TransactionControllerMessenger {
return controllerMessenger.getRestricted({
return messenger.getRestricted({
name: 'TransactionController',
allowedActions: [
'AccountsController:getSelectedAccount',
Expand All @@ -69,9 +69,9 @@ export function getTransactionControllerMessenger(
}

export function getTransactionControllerInitMessenger(
controllerMessenger: ControllerMessenger<MessengerActions, MessengerEvents>,
messenger: Messenger<MessengerActions, MessengerEvents>,
) {
return controllerMessenger.getRestricted({
return messenger.getRestricted({
name: 'TransactionControllerInit',
allowedEvents: [
'TransactionController:transactionApproved',
Expand Down
8 changes: 4 additions & 4 deletions app/scripts/controller-init/types.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { Provider } from '@metamask/network-controller';
import {
ActionConstraint,
ControllerMessenger,
Messenger,
EventConstraint,
RestrictedControllerMessenger,
RestrictedMessenger,
} from '@metamask/base-controller';
import { Hex } from '@metamask/utils';
import { TransactionMetricsRequest } from '../lib/transaction/metrics';
Expand All @@ -26,13 +26,13 @@ export type ControllerPersistedState = Partial<{
}>;

/** Generic controller messenger using base template types. */
export type BaseControllerMessenger = ControllerMessenger<
export type BaseControllerMessenger = Messenger<
ActionConstraint,
EventConstraint
>;

/** Generic restricted controller messenger using base template types. */
export type BaseRestrictedControllerMessenger = RestrictedControllerMessenger<
export type BaseRestrictedControllerMessenger = RestrictedMessenger<
string,
ActionConstraint,
EventConstraint,
Expand Down
6 changes: 3 additions & 3 deletions app/scripts/controller-init/utils.test.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { PPOMController } from '@metamask/ppom-validator';
import { ControllerMessenger } from '@metamask/base-controller';
import { Messenger } from '@metamask/base-controller';
import { buildControllerInitRequestMock } from './test/utils';
import { ControllerApi, ControllerName } from './types';
import { initControllers } from './utils';
Expand Down Expand Up @@ -41,7 +41,7 @@ function buildInitRequestMock() {
}

function buildControllerMessenger() {
return new ControllerMessenger();
return new Messenger();
}

describe('Controller Init Utils', () => {
Expand All @@ -56,7 +56,7 @@ describe('Controller Init Utils', () => {
);

const { controllersByName } = initControllers({
baseControllerMessenger: new ControllerMessenger(),
baseControllerMessenger: new Messenger(),
initFunctions: {
[CONTROLLER_NAME_MOCK]: init1Mock,
[CONTROLLER_NAME_2_MOCK]: init2Mock,
Expand Down
7 changes: 2 additions & 5 deletions app/scripts/controllers/account-order.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,4 @@
import {
BaseController,
RestrictedControllerMessenger,
} from '@metamask/base-controller';
import { BaseController, RestrictedMessenger } from '@metamask/base-controller';

// Unique name for the controller
const controllerName = 'AccountOrderController';
Expand Down Expand Up @@ -35,7 +32,7 @@ export type AccountOrderControllerMessengerActions =
| AccountOrderControllerhideAccountsListAction;

// Type for the messenger of AccountOrderController
export type AccountOrderControllerMessenger = RestrictedControllerMessenger<
export type AccountOrderControllerMessenger = RestrictedMessenger<
typeof controllerName,
AccountOrderControllerMessengerActions,
never,
Expand Down
Loading

0 comments on commit 89b1d23

Please sign in to comment.