@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.
@@ -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 => {
@@ -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<void>;
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;gBAEV,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;IAoB/B,OAAO;IAGP,0BAA0B,SAAU;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,UAOrE;CACH"}
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;IA6GzB,QAAQ,CAAC,oBAAoB,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAE9E,GAAG;CAuBV"}
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
- yield method.checkSafetyLevelOnTestNet();
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.13",
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.13",
29
- "@onekeyfe/hd-transport": "1.1.26-alpha.13",
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": "9da4d0d2ddaa0f674da6bbdec7f345657d59551a"
47
+ "gitHead": "75902fd8d80de1c4ba8edc44819a5add6d591d99"
48
48
  }
@@ -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 {void}
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
- await method.checkSafetyLevelOnTestNet();
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