From 9a420eaf10b61aeb7f97cb5ed18529b77817b2b8 Mon Sep 17 00:00:00 2001 From: Alex Miller Date: Tue, 22 Mar 2022 17:42:34 -0500 Subject: [PATCH] Adds option to skip wrong wallet retries Also adds ClientOpts type --- src/client.ts | 37 ++++++++++++++++++++++--------------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/src/client.ts b/src/client.ts index ccced975..3c377fc5 100644 --- a/src/client.ts +++ b/src/client.ts @@ -73,6 +73,7 @@ export class Client { private privKey: Buffer; private retryCount: number; private fwVersion: Buffer; + private skipRetryOnWrongWallet: boolean; /** Temporary secret that is generated by the Lattice device */ private ephemeralPub: KeyPair; @@ -105,20 +106,25 @@ export class Client { /** * @param params - Parameters are passed as an object. */ - constructor({ baseUrl, name, privKey, stateData, timeout, retryCount }: { - /** The base URL of the signing server. */ - baseUrl?: string; - /** The name of the client. */ - name?: string; - /** The private key of the client.*/ - privKey?: Buffer; - /** Number of times to retry a request if it fails. */ - retryCount?: number; - /** The time to wait for a response before cancelling. */ - timeout?: number; - /** User can pass in previous state data to rehydrate connected session */ - stateData?: string; - }) { + constructor({ + baseUrl, name, privKey, stateData, timeout, retryCount, skipRetryOnWrongWallet + }: { + /** The base URL of the signing server. */ + baseUrl?: string; + /** The name of the client. */ + name?: string; + /** The private key of the client.*/ + privKey?: Buffer; + /** Number of times to retry a request if it fails. */ + retryCount?: number; + /** The time to wait for a response before cancelling. */ + timeout?: number; + /** User can pass in previous state data to rehydrate connected session */ + stateData?: string; + /** If true we will not retry if we get a wrong wallet error code */ + skipRetryOnWrongWallet: boolean; + } + ) { // Default state params // ----- this.ephemeralPub = null; @@ -138,6 +144,7 @@ export class Client { external: true, }, }; + this.skipRetryOnWrongWallet = skipRetryOnWrongWallet || false; // The user may pass in state data to rehydrate a session that was previously cached // ----- @@ -1105,7 +1112,7 @@ export class Client { } this._request(payload, encReqCode, cb, retryCount - 1); }); - } else if (canRetry && wrongWallet) { + } else if (canRetry && wrongWallet && !this.skipRetryOnWrongWallet) { // Incorrect wallet being requested. Clear wallet state. this._resetActiveWallets(); // Refetch the active wallet.