From 28ee35217e9b6fa0cc4eae6968a5264220add09c Mon Sep 17 00:00:00 2001 From: Simon Warta Date: Mon, 17 Feb 2020 12:31:59 +0100 Subject: [PATCH] Let CosmWasmClient.getNonce throw --- packages/sdk/src/cosmwasmclient.spec.ts | 10 +++++----- packages/sdk/src/cosmwasmclient.ts | 11 +++++++++-- packages/sdk/types/cosmwasmclient.d.ts | 4 +++- 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/packages/sdk/src/cosmwasmclient.spec.ts b/packages/sdk/src/cosmwasmclient.spec.ts index 29628d49..319610a8 100644 --- a/packages/sdk/src/cosmwasmclient.spec.ts +++ b/packages/sdk/src/cosmwasmclient.spec.ts @@ -74,14 +74,14 @@ describe("CosmWasmClient", () => { }); }); - it("returns zeros for missing accounts", async () => { + it("throws for missing accounts", async () => { pendingWithoutCosmos(); const client = CosmWasmClient.makeReadOnly(httpUrl); const missing = makeRandomAddress(); - expect(await client.getNonce(missing)).toEqual({ - accountNumber: 0, - sequence: 0, - }); + await client.getNonce(missing).then( + () => fail("this must not succeed"), + error => expect(error).toMatch(/account does not exist on chain/i), + ); }); }); diff --git a/packages/sdk/src/cosmwasmclient.ts b/packages/sdk/src/cosmwasmclient.ts index d15fbedb..be66846d 100644 --- a/packages/sdk/src/cosmwasmclient.ts +++ b/packages/sdk/src/cosmwasmclient.ts @@ -148,13 +148,20 @@ export class CosmWasmClient { /** * Returns account number and sequence. * + * Throws if the account does not exist on chain. + * * @param address returns data for this address. When unset, the client's sender adddress is used. */ public async getNonce(address?: string): Promise { const account = await this.getAccount(address); + if (!account) { + throw new Error( + "Account does not exist on chain. Send some tokens there before trying to query nonces.", + ); + } return { - accountNumber: account ? account.account_number : 0, - sequence: account ? account.sequence : 0, + accountNumber: account.account_number, + sequence: account.sequence, }; } diff --git a/packages/sdk/types/cosmwasmclient.d.ts b/packages/sdk/types/cosmwasmclient.d.ts index 70e07e10..93fd5216 100644 --- a/packages/sdk/types/cosmwasmclient.d.ts +++ b/packages/sdk/types/cosmwasmclient.d.ts @@ -1,6 +1,6 @@ import { Log } from "./logs"; import { BlockResponse, TxsResponse } from "./restclient"; -import { Coin, CosmosSdkTx, StdSignature, CosmosSdkAccount } from "./types"; +import { Coin, CosmosSdkAccount, CosmosSdkTx, StdSignature } from "./types"; export interface SigningCallback { (signBytes: Uint8Array): Promise; } @@ -43,6 +43,8 @@ export declare class CosmWasmClient { /** * Returns account number and sequence. * + * Throws if the account does not exist on chain. + * * @param address returns data for this address. When unset, the client's sender adddress is used. */ getNonce(address?: string): Promise;