Skip to content

Commit

Permalink
refactor: use patched @metamask/keyring-controller
Browse files Browse the repository at this point in the history
  • Loading branch information
mikesposito committed Jul 18, 2023
1 parent b7da0a9 commit a73071d
Show file tree
Hide file tree
Showing 10 changed files with 1,167 additions and 490 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
diff --git a/dist/KeyringController.d.ts b/dist/KeyringController.d.ts
index 82de83a7bb1ad14bb23f3b6274e0c4d5bb773382..35ec924d1530eb944c77c9605a1fb1dda58ebcaf 100644
--- a/dist/KeyringController.d.ts
+++ b/dist/KeyringController.d.ts
@@ -1,10 +1,10 @@
import type { TxData, TypedTransaction } from '@ethereumjs/tx';
-import { type MetaMaskKeyring as QRKeyring, type IKeyringState as IQRKeyringState } from '@keystonehq/metamask-airgapped-keyring';
+import type { MetaMaskKeyring as QRKeyring, IKeyringState as IQRKeyringState } from '@keystonehq/metamask-airgapped-keyring';
import type { RestrictedControllerMessenger } from '@metamask/base-controller';
import { BaseControllerV2 } from '@metamask/base-controller';
import type { PersonalMessageParams, TypedMessageParams } from '@metamask/message-manager';
import type { PreferencesController } from '@metamask/preferences-controller';
-import { type Hex, type Keyring, type Json } from '@metamask/utils';
+import type { Hex, Keyring, Json } from '@metamask/utils';
import type { Patch } from 'immer';
declare const name = "KeyringController";
/**
@@ -135,6 +135,10 @@ export declare class KeyringController extends BaseControllerV2<typeof name, Key
* @param opts.state - Initial state to set on this controller.
*/
constructor({ removeIdentity, syncIdentities, updateIdentities, setSelectedAddress, setAccountLabel, encryptor, keyringBuilders, cacheEncryptionKey, messenger, state, }: KeyringControllerOptions);
+ /**
+ * Gets the internal keyring controller.
+ */
+ getEthKeyringController(): any;
/**
* Adds a new account to the default (first) HD seed phrase keyring.
*
diff --git a/dist/KeyringController.js b/dist/KeyringController.js
index 54d39d266425b45ed1008cecb16e78cf831c75d7..0ddded415bf71716c27ed3bf7bd1c5a79b11be13 100644
--- a/dist/KeyringController.js
+++ b/dist/KeyringController.js
@@ -153,6 +153,12 @@ class KeyringController extends base_controller_1.BaseControllerV2 {
this.setSelectedAddress = setSelectedAddress;
this.setAccountLabel = setAccountLabel;
}
+ /**
+ * Gets the internal keyring controller.
+ */
+ getEthKeyringController() {
+ return __classPrivateFieldGet(this, _KeyringController_keyring, "f");
+ }
/**
* Adds a new account to the default (first) HD seed phrase keyring.
*
36 changes: 33 additions & 3 deletions app/scripts/metamask-controller.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ import { createEngineStream } from 'json-rpc-middleware-stream';
import { providerAsMiddleware } from '@metamask/eth-json-rpc-middleware';
import { debounce } from 'lodash';
import {
KeyringController,
keyringBuilderFactory,
} from '@metamask/eth-keyring-controller';
import { KeyringController } from '@metamask/keyring-controller';
import createFilterMiddleware from 'eth-json-rpc-filters';
import createSubscriptionManager from 'eth-json-rpc-filters/subscriptionManager';
import { errorCodes as rpcErrorCodes, EthereumRpcError } from 'eth-rpc-errors';
Expand Down Expand Up @@ -821,13 +821,43 @@ export default class MetamaskController extends EventEmitter {
);
///: END:ONLY_INCLUDE_IN

this.keyringController = new KeyringController({
const keyringControllerMessenger = this.controllerMessenger.getRestricted({
name: 'KeyringController',
allowedEvents: [
'KeyringController:accountRemoved',
'KeyringController:lock',
'KeyringController:stateChange',
'KeyringController:unlock',
],
allowedActions: ['KeyringController:getState'],
});

this.coreKeyringController = new KeyringController({
keyringBuilders: additionalKeyrings,
initState: initState.KeyringController,
state: initState.KeyringController,
encryptor: opts.encryptor || undefined,
cacheEncryptionKey: isManifestV3,
messenger: keyringControllerMessenger,
removeIdentity: this.preferencesController.removeAddress.bind(
this.preferencesController,
),
setAccountLabel: this.preferencesController.setAccountLabel.bind(
this.preferencesController,
),
setSelectedAddress: this.preferencesController.setSelectedAddress.bind(
this.preferencesController,
),
syncIdentities: this.preferencesController.syncAddresses.bind(
this.preferencesController,
),
updateIdentities: this.preferencesController.setAddresses.bind(
this.preferencesController,
),
});

this.keyringController =
this.coreKeyringController.getEthKeyringController();

this.keyringController.memStore.subscribe((state) =>
this._onKeyringControllerUpdate(state),
);
Expand Down
Loading

0 comments on commit a73071d

Please sign in to comment.