@onekeyfe/hd-core 1.1.26-alpha.13 → 1.1.26-alpha.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/__tests__/evmLedgerLegacySafety.test.ts +80 -0
- package/dist/api/BaseMethod.d.ts +2 -1
- package/dist/api/BaseMethod.d.ts.map +1 -1
- package/dist/api/allnetwork/AllNetworkGetAddressBase.d.ts.map +1 -1
- package/dist/index.js +16 -1
- package/package.json +4 -4
- package/src/api/BaseMethod.ts +11 -1
- package/src/api/allnetwork/AllNetworkGetAddressBase.ts +8 -1
|
@@ -128,6 +128,86 @@ describe('EVM Ledger legacy path safety checks', () => {
|
|
|
128
128
|
runSpy.mockRestore();
|
|
129
129
|
});
|
|
130
130
|
|
|
131
|
+
it('only applies temporary safety checks once during one allNetwork request even when features stay strict', async () => {
|
|
132
|
+
const { device, typedCall } = createDevice('PRO');
|
|
133
|
+
(findMethod as jest.Mock).mockImplementation(message => new EvmGetAddress(message));
|
|
134
|
+
const runSpy = jest
|
|
135
|
+
.spyOn(EvmGetAddress.prototype, 'run')
|
|
136
|
+
.mockResolvedValueOnce([
|
|
137
|
+
{
|
|
138
|
+
path: "m/44'/60'/0'/2",
|
|
139
|
+
address: '0x0000000000000000000000000000000000000002',
|
|
140
|
+
},
|
|
141
|
+
])
|
|
142
|
+
.mockResolvedValueOnce([
|
|
143
|
+
{
|
|
144
|
+
path: "m/44'/60'/0'/3",
|
|
145
|
+
address: '0x0000000000000000000000000000000000000003',
|
|
146
|
+
},
|
|
147
|
+
]);
|
|
148
|
+
const method = new TestAllNetworkMethod({
|
|
149
|
+
id: 1,
|
|
150
|
+
payload: {
|
|
151
|
+
method: 'allNetworkGetAddressByLoop',
|
|
152
|
+
connectId: 'connect-id',
|
|
153
|
+
deviceId: 'device-id',
|
|
154
|
+
bundle: [],
|
|
155
|
+
},
|
|
156
|
+
});
|
|
157
|
+
method.device = {
|
|
158
|
+
...device,
|
|
159
|
+
on: jest.fn(),
|
|
160
|
+
off: jest.fn(),
|
|
161
|
+
} as any;
|
|
162
|
+
|
|
163
|
+
await method.callMethod(
|
|
164
|
+
'evmGetAddress',
|
|
165
|
+
{
|
|
166
|
+
bundle: [
|
|
167
|
+
{
|
|
168
|
+
path: "m/44'/60'/0'/2",
|
|
169
|
+
showOnOneKey: false,
|
|
170
|
+
chainId: 1,
|
|
171
|
+
_originRequestParams: {
|
|
172
|
+
network: 'evm',
|
|
173
|
+
path: "m/44'/60'/0'/2",
|
|
174
|
+
showOnOneKey: false,
|
|
175
|
+
chainName: '1',
|
|
176
|
+
},
|
|
177
|
+
},
|
|
178
|
+
],
|
|
179
|
+
},
|
|
180
|
+
0
|
|
181
|
+
);
|
|
182
|
+
|
|
183
|
+
await method.callMethod(
|
|
184
|
+
'evmGetAddress',
|
|
185
|
+
{
|
|
186
|
+
bundle: [
|
|
187
|
+
{
|
|
188
|
+
path: "m/44'/60'/0'/3",
|
|
189
|
+
showOnOneKey: false,
|
|
190
|
+
chainId: 1,
|
|
191
|
+
_originRequestParams: {
|
|
192
|
+
network: 'evm',
|
|
193
|
+
path: "m/44'/60'/0'/3",
|
|
194
|
+
showOnOneKey: false,
|
|
195
|
+
chainName: '1',
|
|
196
|
+
},
|
|
197
|
+
},
|
|
198
|
+
],
|
|
199
|
+
},
|
|
200
|
+
0
|
|
201
|
+
);
|
|
202
|
+
|
|
203
|
+
expect(typedCall).toHaveBeenCalledTimes(1);
|
|
204
|
+
expect(typedCall).toHaveBeenCalledWith('ApplySettings', 'Success', {
|
|
205
|
+
safety_checks: 'PromptTemporarily',
|
|
206
|
+
});
|
|
207
|
+
|
|
208
|
+
runSpy.mockRestore();
|
|
209
|
+
});
|
|
210
|
+
|
|
131
211
|
it.each(["m/44'/60'/0'/0", "m/44'/60'/0'/1"])(
|
|
132
212
|
'keeps safety checks unchanged for legal ledger legacy path %s',
|
|
133
213
|
async path => {
|
package/dist/api/BaseMethod.d.ts
CHANGED
|
@@ -27,6 +27,7 @@ export declare abstract class BaseMethod<Params = undefined> {
|
|
|
27
27
|
strictCheckDeviceSupport: boolean;
|
|
28
28
|
postMessage: (message: CoreMessage) => void;
|
|
29
29
|
context?: CoreContext;
|
|
30
|
+
temporarySafetyCheckPrompted: boolean;
|
|
30
31
|
constructor(message: {
|
|
31
32
|
id?: number;
|
|
32
33
|
payload: any;
|
|
@@ -42,7 +43,7 @@ export declare abstract class BaseMethod<Params = undefined> {
|
|
|
42
43
|
strictCheckDeviceSupport?: boolean;
|
|
43
44
|
}): void;
|
|
44
45
|
private shouldPromptSafetyCheckForEvmLedgerLegacyPath;
|
|
45
|
-
checkSafetyLevelOnTestNet(): Promise<
|
|
46
|
+
checkSafetyLevelOnTestNet(): Promise<boolean>;
|
|
46
47
|
dispose(): void;
|
|
47
48
|
postPreviousAddressMessage: (data: {
|
|
48
49
|
address?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseMethod.d.ts","sourceRoot":"","sources":["../../src/api/BaseMethod.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,eAAe,MAAM,2BAA2B,CAAC;AAC7D,OAAO,KAAK,EAAE,mBAAmB,EAAe,MAAM,UAAU,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AA6B3C,8BAAsB,UAAU,CAAC,MAAM,GAAG,SAAS;IACjD,UAAU,EAAE,MAAM,CAAC;IAGnB,MAAM,EAAE,MAAM,CAAC;IAGf,MAAM,EAAE,MAAM,CAAC;IAOf,SAAS,CAAC,EAAE,MAAM,CAAC;IAKnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,WAAW,CAAC,EAAE,MAAM,CAAC;IAKrB,IAAI,EAAE,MAAM,CAAC;IAEb,UAAU,EAAG,MAAM,CAAC;IAEpB,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,cAAc,CAAC,EAAE,cAAc,CAAC;IAKhC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAE7B,SAAS,CAAC,EAAE,eAAe,CAAC;IAK5B,SAAS,EAAE,OAAO,CAAC;IAMnB,eAAe,EAAE,MAAM,EAAE,CAAC;IAK1B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAK5B,qBAAqB,UAAQ;IAK7B,aAAa,UAAS;IAKtB,wBAAwB,UAAQ;IAMhC,oBAAoB,UAAS;IAO7B,wBAAwB,UAAS;IAGjC,WAAW,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,CAAC;IAE5C,OAAO,CAAC,EAAE,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"BaseMethod.d.ts","sourceRoot":"","sources":["../../src/api/BaseMethod.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,eAAe,MAAM,2BAA2B,CAAC;AAC7D,OAAO,KAAK,EAAE,mBAAmB,EAAe,MAAM,UAAU,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AA6B3C,8BAAsB,UAAU,CAAC,MAAM,GAAG,SAAS;IACjD,UAAU,EAAE,MAAM,CAAC;IAGnB,MAAM,EAAE,MAAM,CAAC;IAGf,MAAM,EAAE,MAAM,CAAC;IAOf,SAAS,CAAC,EAAE,MAAM,CAAC;IAKnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,WAAW,CAAC,EAAE,MAAM,CAAC;IAKrB,IAAI,EAAE,MAAM,CAAC;IAEb,UAAU,EAAG,MAAM,CAAC;IAEpB,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,cAAc,CAAC,EAAE,cAAc,CAAC;IAKhC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAE7B,SAAS,CAAC,EAAE,eAAe,CAAC;IAK5B,SAAS,EAAE,OAAO,CAAC;IAMnB,eAAe,EAAE,MAAM,EAAE,CAAC;IAK1B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAK5B,qBAAqB,UAAQ;IAK7B,aAAa,UAAS;IAKtB,wBAAwB,UAAQ;IAMhC,oBAAoB,UAAS;IAO7B,wBAAwB,UAAS;IAGjC,WAAW,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,CAAC;IAE5C,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB,4BAA4B,UAAS;gBAEzB,OAAO,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,GAAG,CAAA;KAAE;IAYlD,QAAQ,CAAC,IAAI,IAAI,IAAI;IAErB,QAAQ,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IAE5B,eAAe,IAAI,mBAAmB;IAItC,UAAU,CAAC,OAAO,EAAE,WAAW;IAQ/B,SAAS,CAAC,MAAM,EAAE,MAAM;IA2BxB,oBAAoB;IAmBpB,yBAAyB;IAczB,SAAS,CAAC,wBAAwB,CAChC,cAAc,EAAE,MAAM,OAAO,EAC7B,eAAe,EAAE,MAAM,mBAAmB,EAC1C,OAAO,CAAC,EAAE;QACR,wBAAwB,CAAC,EAAE,OAAO,CAAC;KACpC;IA8BH,OAAO,CAAC,6CAA6C;IAqB/C,yBAAyB;IA4B/B,OAAO;IAGP,0BAA0B,SAAU;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,UAOrE;CACH"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AllNetworkGetAddressBase.d.ts","sourceRoot":"","sources":["../../../src/api/allnetwork/AllNetworkGetAddressBase.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAe3C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EACV,iBAAiB,EACjB,uBAAuB,EACvB,oBAAoB,EACpB,QAAQ,EACT,MAAM,sCAAsC,CAAC;AAI9C,MAAM,MAAM,aAAa,GAAG;IAC1B,UAAU,EAAE,MAAM,OAAO,CAAC;IAC1B,SAAS,CAAC,EAAE,CAAC,UAAU,EAAE,uBAAuB,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,KAAK,GAAG,CAAC;IAClG,kBAAkB,CAAC,EAAE,CAAC,MAAM,OAAO,CAAC,EAAE,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC,CAAC;AAEzF,MAAM,MAAM,gBAAgB,GAAG;KAC5B,CAAC,IAAI,YAAY,GAAG,aAAa;CACnC,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE;IAC3B,CAAC,GAAG,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,YAAY,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAOrD,CAAC;AAiMF,KAAK,YAAY,GAAG;IAClB,UAAU,EAAE,MAAM,OAAO,CAAC;IAC1B,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,oBAAoB,EAAE,uBAAuB,CAAC;IAC9C,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,CAAC,OAAO,CAAC,QAAQ,OAAO,wBAAyB,SAAQ,UAAU,CACvE;IACE,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,EAAE,CACJ;IACC,eAAe,EAAE,eAAe,GAAG,IAAI,CAAQ;IAE/C,IAAI;IAkBJ,kBAAkB,CAAC,EACjB,OAAO,EACP,OAAO,EACP,aAAa,GACd,EAAE;QACD,OAAO,EAAE,QAAQ,CAAC;QAClB,OAAO,EAAE,uBAAuB,CAAC;QACjC,aAAa,EAAE,MAAM,CAAC;KACvB,GAAG,YAAY;IAqBV,UAAU,CACd,UAAU,EAAE,MAAM,OAAO,EACzB,MAAM,EAAE,GAAG,GAAG;QACZ,MAAM,EAAE,CAAC,GAAG,GAAG;YAAE,oBAAoB,EAAE,oBAAoB,CAAA;SAAE,CAAC,EAAE,CAAC;KAClE,EACD,eAAe,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"AllNetworkGetAddressBase.d.ts","sourceRoot":"","sources":["../../../src/api/allnetwork/AllNetworkGetAddressBase.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAe3C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EACV,iBAAiB,EACjB,uBAAuB,EACvB,oBAAoB,EACpB,QAAQ,EACT,MAAM,sCAAsC,CAAC;AAI9C,MAAM,MAAM,aAAa,GAAG;IAC1B,UAAU,EAAE,MAAM,OAAO,CAAC;IAC1B,SAAS,CAAC,EAAE,CAAC,UAAU,EAAE,uBAAuB,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,KAAK,GAAG,CAAC;IAClG,kBAAkB,CAAC,EAAE,CAAC,MAAM,OAAO,CAAC,EAAE,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC,CAAC;AAEzF,MAAM,MAAM,gBAAgB,GAAG;KAC5B,CAAC,IAAI,YAAY,GAAG,aAAa;CACnC,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE;IAC3B,CAAC,GAAG,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,YAAY,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAOrD,CAAC;AAiMF,KAAK,YAAY,GAAG;IAClB,UAAU,EAAE,MAAM,OAAO,CAAC;IAC1B,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,oBAAoB,EAAE,uBAAuB,CAAC;IAC9C,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,CAAC,OAAO,CAAC,QAAQ,OAAO,wBAAyB,SAAQ,UAAU,CACvE;IACE,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,EAAE,CACJ;IACC,eAAe,EAAE,eAAe,GAAG,IAAI,CAAQ;IAE/C,IAAI;IAkBJ,kBAAkB,CAAC,EACjB,OAAO,EACP,OAAO,EACP,aAAa,GACd,EAAE;QACD,OAAO,EAAE,QAAQ,CAAC;QAClB,OAAO,EAAE,uBAAuB,CAAC;QACjC,aAAa,EAAE,MAAM,CAAC;KACvB,GAAG,YAAY;IAqBV,UAAU,CACd,UAAU,EAAE,MAAM,OAAO,EACzB,MAAM,EAAE,GAAG,GAAG;QACZ,MAAM,EAAE,CAAC,GAAG,GAAG;YAAE,oBAAoB,EAAE,oBAAoB,CAAA;SAAE,CAAC,EAAE,CAAC;KAClE,EACD,eAAe,EAAE,MAAM;IAoHzB,QAAQ,CAAC,oBAAoB,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAE9E,GAAG;CAuBV"}
|
package/dist/index.js
CHANGED
|
@@ -28150,6 +28150,7 @@ class BaseMethod {
|
|
|
28150
28150
|
this.useDevicePassphraseState = true;
|
|
28151
28151
|
this.skipForceUpdateCheck = false;
|
|
28152
28152
|
this.strictCheckDeviceSupport = false;
|
|
28153
|
+
this.temporarySafetyCheckPrompted = false;
|
|
28153
28154
|
this.postPreviousAddressMessage = (data) => {
|
|
28154
28155
|
this.postMessage(createUiMessage(UI_REQUEST.PREVIOUS_ADDRESS_RESULT, {
|
|
28155
28156
|
device: this.device.toMessageObject(),
|
|
@@ -28253,6 +28254,9 @@ class BaseMethod {
|
|
|
28253
28254
|
checkSafetyLevelOnTestNet() {
|
|
28254
28255
|
var _a, _b, _c;
|
|
28255
28256
|
return __awaiter(this, void 0, void 0, function* () {
|
|
28257
|
+
if (this.temporarySafetyCheckPrompted) {
|
|
28258
|
+
return false;
|
|
28259
|
+
}
|
|
28256
28260
|
let checkFlag = false;
|
|
28257
28261
|
if (this.name === 'evmSignTransaction' &&
|
|
28258
28262
|
[3, 4, 5, 420, 11155111].includes(Number((_b = (_a = this.payload) === null || _a === void 0 ? void 0 : _a.transaction) === null || _b === void 0 ? void 0 : _b.chainId))) {
|
|
@@ -28266,7 +28270,10 @@ class BaseMethod {
|
|
|
28266
28270
|
yield this.device.commands.typedCall('ApplySettings', 'Success', {
|
|
28267
28271
|
safety_checks: 'PromptTemporarily',
|
|
28268
28272
|
});
|
|
28273
|
+
this.temporarySafetyCheckPrompted = true;
|
|
28274
|
+
return true;
|
|
28269
28275
|
}
|
|
28276
|
+
return false;
|
|
28270
28277
|
});
|
|
28271
28278
|
}
|
|
28272
28279
|
dispose() { }
|
|
@@ -31483,7 +31490,15 @@ class AllNetworkGetAddressBase extends BaseMethod {
|
|
|
31483
31490
|
this.device.on(DEVICE.PIN, onSignalAbort);
|
|
31484
31491
|
this.device.on(DEVICE.PASSPHRASE, onSignalAbort);
|
|
31485
31492
|
preCheckDeviceSupport(this.device, method);
|
|
31486
|
-
|
|
31493
|
+
if (this.temporarySafetyCheckPrompted) {
|
|
31494
|
+
method.temporarySafetyCheckPrompted = true;
|
|
31495
|
+
}
|
|
31496
|
+
else {
|
|
31497
|
+
const appliedTemporarySafetyCheck = yield method.checkSafetyLevelOnTestNet();
|
|
31498
|
+
if (appliedTemporarySafetyCheck) {
|
|
31499
|
+
this.temporarySafetyCheckPrompted = true;
|
|
31500
|
+
}
|
|
31501
|
+
}
|
|
31487
31502
|
const response = yield method.run();
|
|
31488
31503
|
if (!Array.isArray(response) || response.length === 0) {
|
|
31489
31504
|
throw new Error('No response');
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@onekeyfe/hd-core",
|
|
3
|
-
"version": "1.1.26-alpha.
|
|
3
|
+
"version": "1.1.26-alpha.15",
|
|
4
4
|
"description": "Core processes and APIs for communicating with OneKey hardware devices.",
|
|
5
5
|
"author": "OneKey",
|
|
6
6
|
"homepage": "https://github.com/OneKeyHQ/hardware-js-sdk#readme",
|
|
@@ -25,8 +25,8 @@
|
|
|
25
25
|
"url": "https://github.com/OneKeyHQ/hardware-js-sdk/issues"
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@onekeyfe/hd-shared": "1.1.26-alpha.
|
|
29
|
-
"@onekeyfe/hd-transport": "1.1.26-alpha.
|
|
28
|
+
"@onekeyfe/hd-shared": "1.1.26-alpha.15",
|
|
29
|
+
"@onekeyfe/hd-transport": "1.1.26-alpha.15",
|
|
30
30
|
"axios": "1.15.2",
|
|
31
31
|
"bignumber.js": "^9.0.2",
|
|
32
32
|
"bytebuffer": "^5.0.1",
|
|
@@ -44,5 +44,5 @@
|
|
|
44
44
|
"@types/w3c-web-usb": "^1.0.10",
|
|
45
45
|
"@types/web-bluetooth": "^0.0.21"
|
|
46
46
|
},
|
|
47
|
-
"gitHead": "
|
|
47
|
+
"gitHead": "75902fd8d80de1c4ba8edc44819a5add6d591d99"
|
|
48
48
|
}
|
package/src/api/BaseMethod.ts
CHANGED
|
@@ -145,6 +145,8 @@ export abstract class BaseMethod<Params = undefined> {
|
|
|
145
145
|
|
|
146
146
|
context?: CoreContext;
|
|
147
147
|
|
|
148
|
+
temporarySafetyCheckPrompted = false;
|
|
149
|
+
|
|
148
150
|
constructor(message: { id?: number; payload: any }) {
|
|
149
151
|
const { payload } = message;
|
|
150
152
|
this.name = payload.method;
|
|
@@ -287,9 +289,13 @@ export abstract class BaseMethod<Params = undefined> {
|
|
|
287
289
|
|
|
288
290
|
/**
|
|
289
291
|
* Automatic check safety_check level for selected calls that require temporary relaxed checks.
|
|
290
|
-
* @returns
|
|
292
|
+
* @returns whether a temporary safety check prompt was applied.
|
|
291
293
|
*/
|
|
292
294
|
async checkSafetyLevelOnTestNet() {
|
|
295
|
+
if (this.temporarySafetyCheckPrompted) {
|
|
296
|
+
return false;
|
|
297
|
+
}
|
|
298
|
+
|
|
293
299
|
let checkFlag = false;
|
|
294
300
|
// 3 - Ropsten, 4 - Rinkeby, 5 - Goerli, 420 - Optimism Goerli, 11155111 - zkSync Sepolia
|
|
295
301
|
if (
|
|
@@ -306,7 +312,11 @@ export abstract class BaseMethod<Params = undefined> {
|
|
|
306
312
|
await this.device.commands.typedCall('ApplySettings', 'Success', {
|
|
307
313
|
safety_checks: 'PromptTemporarily',
|
|
308
314
|
});
|
|
315
|
+
this.temporarySafetyCheckPrompted = true;
|
|
316
|
+
return true;
|
|
309
317
|
}
|
|
318
|
+
|
|
319
|
+
return false;
|
|
310
320
|
}
|
|
311
321
|
|
|
312
322
|
dispose() {}
|
|
@@ -371,7 +371,14 @@ export default abstract class AllNetworkGetAddressBase extends BaseMethod<
|
|
|
371
371
|
this.device.on(DEVICE.PASSPHRASE, onSignalAbort);
|
|
372
372
|
|
|
373
373
|
preCheckDeviceSupport(this.device, method);
|
|
374
|
-
|
|
374
|
+
if (this.temporarySafetyCheckPrompted) {
|
|
375
|
+
method.temporarySafetyCheckPrompted = true;
|
|
376
|
+
} else {
|
|
377
|
+
const appliedTemporarySafetyCheck = await method.checkSafetyLevelOnTestNet();
|
|
378
|
+
if (appliedTemporarySafetyCheck) {
|
|
379
|
+
this.temporarySafetyCheckPrompted = true;
|
|
380
|
+
}
|
|
381
|
+
}
|
|
375
382
|
|
|
376
383
|
const response = await method.run();
|
|
377
384
|
|