Skip to content

Commit

Permalink
feat: account tag enhancement & uppercase for OneKey labels
Browse files Browse the repository at this point in the history
  • Loading branch information
Akaryatrh committed Feb 12, 2025
1 parent 584c13d commit 0c19260
Show file tree
Hide file tree
Showing 13 changed files with 66 additions and 34 deletions.
19 changes: 13 additions & 6 deletions app/scripts/metamask-controller.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ import { JsonRpcError, providerErrors } from '@metamask/rpc-errors';
import { Mutex } from 'await-semaphore';
import log from 'loglevel';
import {
OneKeyKeyring,
TrezorConnectBridge,
TrezorKeyring,
} from '@metamask/eth-trezor-keyring';
Expand Down Expand Up @@ -1126,6 +1127,10 @@ export default class MetamaskController extends EventEmitter {
keyring: keyringOverrides?.trezor || TrezorKeyring,
bridge: keyringOverrides?.trezorBridge || TrezorConnectBridge,
},
{
keyring: keyringOverrides?.oneKey || OneKeyKeyring,
bridge: keyringOverrides?.oneKeyBridge || TrezorConnectBridge,
},
{
keyring: keyringOverrides?.ledger || LedgerKeyring,
bridge: keyringOverrides?.ledgerBridge || LedgerIframeBridge,
Expand All @@ -1150,6 +1155,10 @@ export default class MetamaskController extends EventEmitter {
TrezorKeyring,
keyringOverrides?.trezorBridge || TrezorOffscreenBridge,
),
hardwareKeyringBuilderFactory(
OneKeyKeyring,
keyringOverrides?.oneKey || TrezorOffscreenBridge,
),
hardwareKeyringBuilderFactory(
LedgerKeyring,
keyringOverrides?.ledgerBridge || LedgerOffscreenBridge,
Expand Down Expand Up @@ -4653,11 +4662,7 @@ export default class MetamaskController extends EventEmitter {
// The `getKeyringForAccount` is now deprecated, so we just use `withKeyring` instead to access our keyring.
return await this.keyringController.withKeyring(
{ address },
({ type: keyringType, bridge: keyringBridge }) =>
// Specific case for OneKey devices, see `ONE_KEY_VIA_TREZOR_MINOR_VERSION` for further details.
keyringBridge?.minorVersion === ONE_KEY_VIA_TREZOR_MINOR_VERSION
? HardwareKeyringType.oneKey
: HardwareKeyringType[keyringType],
({ type }) => HardwareKeyringType[type],
);
}

Expand Down Expand Up @@ -7458,9 +7463,11 @@ export default class MetamaskController extends EventEmitter {
let keyringType = null;
switch (options.name) {
case HardwareDeviceNames.trezor:
case HardwareDeviceNames.oneKey:
keyringType = keyringOverrides?.trezor?.type || TrezorKeyring.type;
break;
case HardwareDeviceNames.oneKey:
keyringType = keyringOverrides?.oneKey?.type || OneKeyKeyring?.type;
break;
case HardwareDeviceNames.ledger:
keyringType = keyringOverrides?.ledger?.type || LedgerKeyring.type;
break;
Expand Down
8 changes: 8 additions & 0 deletions lavamoat/build-system/policy.json
Original file line number Diff line number Diff line change
Expand Up @@ -1795,6 +1795,7 @@
"chokidar>anymatch": true,
"chokidar>braces": true,
"chokidar>fsevents": true,
"tsx>fsevents": true,
"eslint>glob-parent": true,
"chokidar>is-binary-path": true,
"del>is-glob": true,
Expand Down Expand Up @@ -3364,6 +3365,13 @@
"gulp-watch>chokidar>fsevents>node-pre-gyp": true
}
},
"tsx>fsevents": {
"globals": {
"console.assert": true,
"process.platform": true
},
"native": true
},
"@lavamoat/allow-scripts>@npmcli/run-script>node-gyp>npmlog>gauge": {
"builtin": {
"util.format": true
Expand Down
12 changes: 8 additions & 4 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -291,7 +291,7 @@
"@metamask-institutional/types": "^1.2.0",
"@metamask/abi-utils": "^2.0.2",
"@metamask/account-watcher": "^4.1.2",
"@metamask/accounts-controller": "^23.0.1",
"@metamask/accounts-controller": "^23.1.0",
"@metamask/address-book-controller": "^6.0.3",
"@metamask/announcement-controller": "^7.0.3",
"@metamask/approval-controller": "^7.0.0",
Expand All @@ -310,14 +310,14 @@
"@metamask/eth-sig-util": "^7.0.1",
"@metamask/eth-snap-keyring": "^10.0.0",
"@metamask/eth-token-tracker": "^10.0.2",
"@metamask/eth-trezor-keyring": "^6.0.0",
"@metamask/eth-trezor-keyring": "^6.1.0",
"@metamask/etherscan-link": "^3.0.0",
"@metamask/gas-fee-controller": "^22.0.3",
"@metamask/jazzicon": "^2.0.0",
"@metamask/json-rpc-engine": "^10.0.0",
"@metamask/json-rpc-middleware-stream": "^8.0.4",
"@metamask/keyring-api": "^17.0.0",
"@metamask/keyring-controller": "^19.0.7",
"@metamask/keyring-controller": "^19.1.0",
"@metamask/keyring-internal-api": "^4.0.2",
"@metamask/keyring-snap-client": "^4.0.0",
"@metamask/logging-controller": "^6.0.4",
Expand Down Expand Up @@ -771,7 +771,11 @@
"level>classic-level": false,
"jest-preview": false,
"@metamask/solana-wallet-snap>@solana/web3.js>bigint-buffer": false,
"@lavamoat/allow-scripts>@lavamoat/preinstall-always-fail": false
"@lavamoat/allow-scripts>@lavamoat/preinstall-always-fail": false,
"@metamask/eth-trezor-keyring>@trezor/connect-web>@trezor/connect>@trezor/transport>protobufjs": false,
"@metamask/eth-trezor-keyring>@trezor/connect-web>@trezor/connect>@trezor/transport>usb": false,
"@trezor/connect-web>@trezor/connect>@trezor/blockchain-link>@solana/web3.js>rpc-websockets>bufferutil": false,
"@trezor/connect-web>@trezor/connect>@trezor/blockchain-link>@solana/web3.js>rpc-websockets>utf-8-validate": false
}
},
"packageManager": "[email protected]",
Expand Down
3 changes: 2 additions & 1 deletion shared/constants/hardware-wallets.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,15 @@ export enum HardwareKeyringType {
export enum HardwareKeyringNames {
ledger = 'Ledger',
trezor = 'Trezor',
oneKey = 'OneKey',
lattice = 'Lattice1',
qr = 'QR',
}

export enum HardwareDeviceNames {
ledger = 'ledger',
trezor = 'trezor',
oneKey = 'onekey',
oneKey = 'oneKey',
lattice = 'lattice',
qr = 'QR Hardware',
}
Expand Down
2 changes: 1 addition & 1 deletion ui/ducks/app/app.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -230,7 +230,7 @@ describe('App State', () => {
it('sets hardware wallet default hd path', () => {
const hdPaths = {
trezor: "m/44'/60'/0'/0",
onekey: "m/44'/60'/0'/0",
oneKey: "m/44'/60'/0'/0",
ledger: "m/44'/60'/0'",
lattice: "m/44'/60'/0'/0",
};
Expand Down
4 changes: 2 additions & 2 deletions ui/ducks/app/app.ts
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ type AppState = {
buyView: Record<string, any>;
defaultHdPaths: {
trezor: string;
onekey: string;
oneKey: string;
ledger: string;
lattice: string;
};
Expand Down Expand Up @@ -178,7 +178,7 @@ const initialState: AppState = {
buyView: {},
defaultHdPaths: {
trezor: `m/44'/60'/0'/0`,
onekey: `m/44'/60'/0'/0`,
oneKey: `m/44'/60'/0'/0`,
ledger: `m/44'/60'/0'/0/0`,
lattice: `m/44'/60'/0'/0`,
},
Expand Down
2 changes: 2 additions & 0 deletions ui/helpers/utils/accounts.js
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,8 @@ export function getAccountLabel(
return HardwareKeyringNames.qr;
case KeyringType.trezor:
return HardwareKeyringNames.trezor;
case KeyringType.oneKey:
return HardwareKeyringNames.oneKey;
case KeyringType.ledger:
return HardwareKeyringNames.ledger;
case KeyringType.lattice:
Expand Down
7 changes: 7 additions & 0 deletions ui/helpers/utils/accounts.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,13 @@ describe('Accounts', () => {
);
});

it('should return the correct label for OneKey hardware wallet', () => {
mockAccount.metadata.keyring.type = KeyringType.oneKey;
expect(getAccountLabel(KeyringType.oneKey, mockAccount)).toBe(
HardwareKeyringNames.oneKey,
);
});

it('should return the correct label for Ledger hardware wallet', () => {
mockAccount.metadata.keyring.type = KeyringType.ledger;
expect(getAccountLabel(KeyringType.ledger, mockAccount)).toBe(
Expand Down
6 changes: 4 additions & 2 deletions ui/pages/create-account/connect-hardware/account-list.js
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ class AccountList extends Component {
<div className="hw-connect__hdPath">
<Dropdown
className="hw-connect__hdPath__select"
options={hdPaths[device.toLowerCase()]}
options={hdPaths[device]}
selectedOption={pathValue || selectedPath}
onChange={(value) => {
this.setPath(value);
Expand All @@ -73,7 +73,9 @@ class AccountList extends Component {
HardwareDeviceNames.lattice,
HardwareDeviceNames.trezor,
HardwareDeviceNames.oneKey,
].includes(device.toLowerCase());
]
.map((name) => name.toLowerCase())
.includes(device.toLowerCase());
return (
<div className="hw-connect">
<h3 className="hw-connect__unlock-title">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ const render = () => {
ledger: LEDGER_HD_PATHS,
lattice: LATTICE_HD_PATHS,
trezor: TREZOR_HD_PATHS,
onekey: TREZOR_HD_PATHS,
oneKey: TREZOR_HD_PATHS,
},
onPathChange: jest.fn(),
onAccountChange: jest.fn(),
Expand Down
2 changes: 1 addition & 1 deletion ui/pages/create-account/connect-hardware/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ const HD_PATHS = {
ledger: LEDGER_HD_PATHS,
lattice: LATTICE_HD_PATHS,
trezor: TREZOR_HD_PATHS,
onekey: TREZOR_HD_PATHS,
oneKey: TREZOR_HD_PATHS,
};

const getErrorMessage = (errorCode, t) => {
Expand Down
1 change: 1 addition & 0 deletions ui/selectors/selectors.js
Original file line number Diff line number Diff line change
Expand Up @@ -358,6 +358,7 @@ export function getAccountTypeForKeyring(keyring) {

switch (type) {
case KeyringType.trezor:
case KeyringType.oneKey:
case KeyringType.ledger:
case KeyringType.lattice:
case KeyringType.qr:
Expand Down
32 changes: 16 additions & 16 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -4822,9 +4822,9 @@ __metadata:
languageName: node
linkType: hard

"@metamask/accounts-controller@npm:^23.0.1":
version: 23.0.1
resolution: "@metamask/accounts-controller@npm:23.0.1"
"@metamask/accounts-controller@npm:^23.1.0":
version: 23.1.0
resolution: "@metamask/accounts-controller@npm:23.1.0"
dependencies:
"@ethereumjs/util": "npm:^8.1.0"
"@metamask/base-controller": "npm:^8.0.0"
Expand All @@ -4843,7 +4843,7 @@ __metadata:
"@metamask/providers": ^18.1.0
"@metamask/snaps-controllers": ^9.19.0
webextension-polyfill: ^0.10.0 || ^0.11.0 || ^0.12.0
checksum: 10/65ae8e09fe90de224ed7705dd23ef232ef2308cf5e8e7c1d3e4d13f9692c610e78553ca5d5095352f069a0038d587756bcbedcf14147ad5fd446bf855db69915
checksum: 10/f96be18434d1568ad8e8c9455c8d35a8924ffe8a59610833aec96db39d7df7e609ec1231533be973bbf63f23244bbfbc6a41c8b637aa0c3d36c391b43f6aba98
languageName: node
linkType: hard

Expand Down Expand Up @@ -5365,18 +5365,18 @@ __metadata:
languageName: node
linkType: hard

"@metamask/eth-trezor-keyring@npm:^6.0.0":
version: 6.0.0
resolution: "@metamask/eth-trezor-keyring@npm:6.0.0"
"@metamask/eth-trezor-keyring@npm:^6.1.0":
version: 6.1.0
resolution: "@metamask/eth-trezor-keyring@npm:6.1.0"
dependencies:
"@ethereumjs/tx": "npm:^4.2.0"
"@ethereumjs/util": "npm:^8.1.0"
"@metamask/eth-sig-util": "npm:^8.0.0"
"@metamask/eth-sig-util": "npm:^8.2.0"
"@trezor/connect-plugin-ethereum": "npm:^9.0.3"
"@trezor/connect-web": "npm:^9.1.11"
hdkey: "npm:^2.1.0"
tslib: "npm:^2.6.2"
checksum: 10/d5d799c60eeab963ef3e5533de472044b08b6f72652ecefbf26cec99784829bbcd706df57f6450ddb019c7dff7c41b0e0dad244aad62b7d03b51fc97755e2c4c
checksum: 10/993da25843c14b0db6b1760ad178c5a48d4f765faff4bff539fb43c518f54b74402c9edb7d4042f2699c05b9668b928770f0264cbd04046f6003c2640a83e73c
languageName: node
linkType: hard

Expand Down Expand Up @@ -5573,9 +5573,9 @@ __metadata:
languageName: node
linkType: hard

"@metamask/keyring-controller@npm:^19.0.7":
version: 19.0.7
resolution: "@metamask/keyring-controller@npm:19.0.7"
"@metamask/keyring-controller@npm:^19.0.7, @metamask/keyring-controller@npm:^19.1.0":
version: 19.1.0
resolution: "@metamask/keyring-controller@npm:19.1.0"
dependencies:
"@ethereumjs/util": "npm:^8.1.0"
"@keystonehq/metamask-airgapped-keyring": "npm:^0.14.1"
Expand All @@ -5591,7 +5591,7 @@ __metadata:
async-mutex: "npm:^0.5.0"
ethereumjs-wallet: "npm:^1.0.1"
immer: "npm:^9.0.6"
checksum: 10/9b385b2e4f17126ed992ff4b4ef2cfa86c7404fbda464b482f57ed2aa1254b0ea98b59f9182ee73a4a6dfc6eea93646950eced9370536be2837987556c3b16c3
checksum: 10/2121c8935f019edc92c1fef9901d9b67c1555905b96ac90640b3a991896c33261a6ca59fc23aeb995ca9f39d6c3b33a7b04d95ef48ec440f9683c3dd309bfd7b
languageName: node
linkType: hard

Expand Down Expand Up @@ -26627,7 +26627,7 @@ __metadata:
"@metamask-institutional/types": "npm:^1.2.0"
"@metamask/abi-utils": "npm:^2.0.2"
"@metamask/account-watcher": "npm:^4.1.2"
"@metamask/accounts-controller": "npm:^23.0.1"
"@metamask/accounts-controller": "npm:^23.1.0"
"@metamask/address-book-controller": "npm:^6.0.3"
"@metamask/announcement-controller": "npm:^7.0.3"
"@metamask/api-specs": "npm:^0.9.3"
Expand Down Expand Up @@ -26656,15 +26656,15 @@ __metadata:
"@metamask/eth-sig-util": "npm:^7.0.1"
"@metamask/eth-snap-keyring": "npm:^10.0.0"
"@metamask/eth-token-tracker": "npm:^10.0.2"
"@metamask/eth-trezor-keyring": "npm:^6.0.0"
"@metamask/eth-trezor-keyring": "npm:^6.1.0"
"@metamask/etherscan-link": "npm:^3.0.0"
"@metamask/forwarder": "npm:^1.1.0"
"@metamask/gas-fee-controller": "npm:^22.0.3"
"@metamask/jazzicon": "npm:^2.0.0"
"@metamask/json-rpc-engine": "npm:^10.0.0"
"@metamask/json-rpc-middleware-stream": "npm:^8.0.4"
"@metamask/keyring-api": "npm:^17.0.0"
"@metamask/keyring-controller": "npm:^19.0.7"
"@metamask/keyring-controller": "npm:^19.1.0"
"@metamask/keyring-internal-api": "npm:^4.0.2"
"@metamask/keyring-snap-client": "npm:^4.0.0"
"@metamask/logging-controller": "npm:^6.0.4"
Expand Down

0 comments on commit 0c19260

Please sign in to comment.