Skip to content

Commit

Permalink
chore: handle type mismatching due base-controller type change
Browse files Browse the repository at this point in the history
  • Loading branch information
Jonathansoufer committed Feb 20, 2024
1 parent d912f25 commit 81e2d18
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 14 deletions.
45 changes: 31 additions & 14 deletions app/core/Engine.ts
Original file line number Diff line number Diff line change
Expand Up @@ -345,6 +345,7 @@ class Engine {
this.controllerMessenger = new ControllerMessenger();

const approvalController = new ApprovalController({
// @ts-expect-error TODO: Resolve/patch mismatch between base-controller versions. Before: never, never. Now: string, string, which expects 3rd and 4th args to be informed for restrictedControllerMessengers
messenger: this.controllerMessenger.getRestricted({
name: 'ApprovalController',
}),
Expand Down Expand Up @@ -377,7 +378,7 @@ class Engine {
state: initialState.NetworkController,
messenger: this.controllerMessenger.getRestricted({
name: 'NetworkController',
allowedEvents: ['NetworkController:networkDidChange'],
allowedEvents: [],
allowedActions: [],
}),
// Metrics event tracking is handled in this repository instead
Expand All @@ -386,6 +387,7 @@ class Engine {
// noop
},
};
// @ts-expect-error TODO: Resolve/patch mismatch between base-controller versions. Before: never, never. Now: string, string, which expects 3rd and 4th args to be informed for restrictedControllerMessengers
const networkController = new NetworkController(networkControllerOpts);

networkController.initializeProvider();
Expand All @@ -410,6 +412,7 @@ class Engine {
AppConstants.NETWORK_STATE_CHANGE_EVENT,
listener,
),
// @ts-expect-error TODO: Resolve/patch mismatch between base-controller versions. Before: never, never. Now: string, string, which expects 3rd and 4th args to be informed for restrictedControllerMessengers
messenger: this.controllerMessenger.getRestricted({
name: 'NftController',
allowedActions: [`${approvalController.name}:addRequest`],
Expand Down Expand Up @@ -437,7 +440,6 @@ class Engine {
),
},
{
// @ts-expect-error NftController constructor config type is wrong
useIPFSSubdomains: false,
chainId: networkController.state.providerConfig.chainId,
},
Expand All @@ -455,6 +457,7 @@ class Engine {
provider: networkController.getProviderAndBlockTracker().provider,
chainId: networkController.state.providerConfig.chainId,
},
// @ts-expect-error TODO: Resolve/patch mismatch between base-controller versions. Before: never, never. Now: string, string, which expects 3rd and 4th args to be informed for restrictedControllerMessengers
messenger: this.controllerMessenger.getRestricted({
name: 'TokensController',
allowedActions: [`${approvalController.name}:addRequest`],
Expand All @@ -471,12 +474,14 @@ class Engine {
AppConstants.NETWORK_STATE_CHANGE_EVENT,
listener,
),
// @ts-expect-error TODO: Resolve/patch mismatch between base-controller versions. Before: never, never. Now: string, string, which expects 3rd and 4th args to be informed for restrictedControllerMessengers
messenger: this.controllerMessenger.getRestricted({
name: 'TokenListController',
allowedEvents: ['NetworkController:stateChange'],
}),
});
const currencyRateController = new CurrencyRateController({
// @ts-expect-error TODO: Resolve/patch mismatch between base-controller versions. Before: never, never. Now: string, string, which expects 3rd and 4th args to be informed for restrictedControllerMessengers
messenger: this.controllerMessenger.getRestricted({
name: 'CurrencyRateController',
}),
Expand All @@ -485,6 +490,7 @@ class Engine {
currencyRateController.start();

const gasFeeController = new GasFeeController({
// @ts-expect-error TODO: Resolve/patch mismatch between base-controller versions. Before: never, never. Now: string, string, which expects 3rd and 4th args to be informed for restrictedControllerMessengers
messenger: this.controllerMessenger.getRestricted({
name: 'GasFeeController',
allowedEvents: ['NetworkController:stateChange'],
Expand All @@ -504,8 +510,8 @@ class Engine {
const chainId = networkController.state.providerConfig.chainId;
return (
isMainnetByChainId(chainId) ||
chainId === swapsUtils.BSC_CHAIN_ID ||
chainId === swapsUtils.POLYGON_CHAIN_ID
chainId === `0x${swapsUtils.BSC_CHAIN_ID}` ||
chainId === `0x${swapsUtils.POLYGON_CHAIN_ID}`
);
},
clientId: AppConstants.SWAPS.CLIENT_ID,
Expand Down Expand Up @@ -550,15 +556,9 @@ class Engine {
preferencesController,
),
encryptor,
// @ts-expect-error TODO: Resolve/patch mismatch between base-controller versions. Before: never, never. Now: string, string, which expects 3rd and 4th args to be informed for restrictedControllerMessengers
messenger: this.controllerMessenger.getRestricted({
name: 'KeyringController',
allowedEvents: [
'KeyringController:lock',
'KeyringController:unlock',
'KeyringController:stateChange',
'KeyringController:accountRemoved',
],
allowedActions: ['KeyringController:getState'],
}),
state: initialKeyringState || initialState.KeyringController,
// @ts-expect-error To Do: Update the type of QRHardwareKeyring to Keyring<Json>
Expand Down Expand Up @@ -622,14 +622,18 @@ class Engine {
this.controllerMessenger,
'SnapController:updateSnapState',
),
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
maybeUpdatePhishingList: this.controllerMessenger.call.bind(
this.controllerMessenger,
'PhishingController:maybeUpdateState',
),
isOnPhishingList: (origin: string) =>
this.controllerMessenger.call(
'PhishingController:testOrigin',
// @ts-expect-error TODO: Resolve/patch mismatch between base-controller versions. Before: never, never. Now: string, string, which expects 3rd and 4th args to be informed for restrictedControllerMessengers
origin,
// @ts-expect-error TODO: Resolve/patch mismatch between base-controller versions. Before: never, never. Now: string, string, which expects 3rd and 4th args to be informed for restrictedControllerMessengers
).result,
showDialog: (
origin: string,
Expand All @@ -656,6 +660,7 @@ class Engine {
///: END:ONLY_INCLUDE_IF

const permissionController = new PermissionController({
// @ts-expect-error TODO: Resolve/patch mismatch between base-controller versions. Before: never, never. Now: string, string, which expects 3rd and 4th args to be informed for restrictedControllerMessengers
messenger: this.controllerMessenger.getRestricted({
name: 'PermissionController',
allowedActions: [
Expand All @@ -672,6 +677,8 @@ class Engine {
}),
state: initialState.PermissionController,
caveatSpecifications: getCaveatSpecifications({ getIdentities }),
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
permissionSpecifications: {
...getPermissionSpecifications({
getAllAccounts: () => keyringController.getAccounts(),
Expand All @@ -685,6 +692,7 @@ class Engine {

///: BEGIN:ONLY_INCLUDE_IF(snaps)
const subjectMetadataController = new SubjectMetadataController({
// @ts-expect-error TODO: Resolve/patch mismatch between base-controller versions. Before: never, never. Now: string, string, which expects 3rd and 4th args to be informed for restrictedControllerMessengers
messenger: this.controllerMessenger.getRestricted({
name: 'SubjectMetadataController',
allowedActions: [`${permissionController.name}:hasPermissions`],
Expand Down Expand Up @@ -764,8 +772,6 @@ class Engine {
'ExecutionService:unhandledError',
'ExecutionService:outboundRequest',
'ExecutionService:outboundResponse',
'SnapController:snapInstalled',
'SnapController:snapUpdated',
],
allowedActions: [
`${approvalController.name}:addRequest`,
Expand All @@ -792,6 +798,10 @@ class Engine {
'ExecutionService:terminateSnap',
'ExecutionService:terminateAllSnaps',
'ExecutionService:handleRpcRequest',
'SnapsRegistry:get',
'SnapsRegistry:getMetadata',
'SnapsRegistry:update',
'SnapsRegistry:resolveVersion',
],
});

Expand All @@ -816,7 +826,9 @@ class Engine {
});

this.controllerMessenger.subscribe(
'SnapController:snapAdded',
'SnapController:snapInstalled',
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
(snap: Snap, svgIcon: any = null) => {
const {
manifest: { proposedName },
Expand Down Expand Up @@ -951,6 +963,7 @@ class Engine {
},
updateTransactions: true,
},
// @ts-expect-error TODO: Resolve/patch mismatch between base-controller versions. Before: never, never. Now: string, string, which expects 3rd and 4th args to be informed for restrictedControllerMessengers
messenger: this.controllerMessenger.getRestricted({
name: 'TransactionController',
allowedActions: [`${approvalController.name}:addRequest`],
Expand Down Expand Up @@ -994,6 +1007,7 @@ class Engine {
approvalController,
permissionController,
new SignatureController({
// @ts-expect-error TODO: Resolve/patch mismatch between base-controller versions. Before: never, never. Now: string, string, which expects 3rd and 4th args to be informed for restrictedControllerMessengers
messenger: this.controllerMessenger.getRestricted({
name: 'SignatureController',
allowedActions: [`${approvalController.name}:addRequest`],
Expand Down Expand Up @@ -1025,6 +1039,7 @@ class Engine {
},
}),
new LoggingController({
// @ts-expect-error TODO: Resolve/patch mismatch between base-controller versions. Before: never, never. Now: string, string, which expects 3rd and 4th args to be informed for restrictedControllerMessengers.
messenger: this.controllerMessenger.getRestricted({
name: 'LoggingController',
}),
Expand All @@ -1042,9 +1057,11 @@ class Engine {
chainId: networkController.state.providerConfig.chainId,
blockaidPublicKey: process.env.BLOCKAID_PUBLIC_KEY as string,
cdnBaseUrl: process.env.BLOCKAID_FILE_CDN as string,
// @ts-expect-error TODO: Resolve/patch mismatch between base-controller versions. Before: never, never. Now: string, string, which expects 3rd and 4th args to be informed for restrictedControllerMessengers
messenger: this.controllerMessenger.getRestricted({
name: 'PPOMController',
allowedEvents: ['NetworkController:stateChange'],
allowedActions: [],
}),
onPreferencesChange: (listener) =>
preferencesController.subscribe(listener),
Expand Down
13 changes: 13 additions & 0 deletions patches/@metamask+base-controller+4.1.1.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
diff --git a/node_modules/@metamask/base-controller/dist/RestrictedControllerMessenger.d.ts b/node_modules/@metamask/base-controller/dist/RestrictedControllerMessenger.d.ts
index 423c1a9..5c62cb3 100644
--- a/node_modules/@metamask/base-controller/dist/RestrictedControllerMessenger.d.ts
+++ b/node_modules/@metamask/base-controller/dist/RestrictedControllerMessenger.d.ts
@@ -15,7 +15,7 @@ import type { ActionConstraint, ActionHandler, ControllerMessenger, EventConstra
* @template AllowedEvent - A type union of the 'type' string for any allowed events.
* This must not include internal events that are in the messenger's namespace.
*/
-export declare class RestrictedControllerMessenger<Namespace extends string, Action extends ActionConstraint, Event extends EventConstraint, AllowedAction extends string, AllowedEvent extends string> {
+export declare class RestrictedControllerMessenger<Namespace extends string, Action extends ActionConstraint, Event extends EventConstraint, AllowedAction extends string = string, AllowedEvent extends string = string > {
#private;
/**
* Constructs a restricted controller messenger

0 comments on commit 81e2d18

Please sign in to comment.