From d7efe229e5edf083e64171191fa4c254808ab18f Mon Sep 17 00:00:00 2001 From: Simon Warta Date: Wed, 12 Aug 2020 14:24:58 +0200 Subject: [PATCH] Pull out balances query --- packages/stargate/src/queries/bank.ts | 10 ++++++++++ packages/stargate/src/stargateclient.ts | 9 ++------- packages/stargate/types/queries/bank.d.ts | 1 + 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/packages/stargate/src/queries/bank.ts b/packages/stargate/src/queries/bank.ts index 3fa8f3b4..8bd8b97e 100644 --- a/packages/stargate/src/queries/bank.ts +++ b/packages/stargate/src/queries/bank.ts @@ -6,6 +6,7 @@ import { QueryClient } from "../queryclient"; export interface BankExtension { readonly bank: { readonly balance: (address: string, denom: string) => Promise; + readonly balances: (address: string) => Promise; }; } @@ -24,6 +25,15 @@ export function setupBankExtension(base: QueryClient): BankExtension { const responseData = await base.queryVerified("bank", bankKey); return cosmos.Coin.decode(responseData); }, + balances: async (address: string) => { + const path = "/cosmos.bank.Query/AllBalances"; + const request = cosmos.bank.QueryAllBalancesRequest.encode({ + address: Bech32.decode(address).data, + }).finish(); + const responseData = await base.queryUnverified(path, request); + const response = cosmos.bank.QueryAllBalancesResponse.decode(responseData); + return response.balances; + }, }, }; } diff --git a/packages/stargate/src/stargateclient.ts b/packages/stargate/src/stargateclient.ts index 4532b8b3..61563561 100644 --- a/packages/stargate/src/stargateclient.ts +++ b/packages/stargate/src/stargateclient.ts @@ -208,13 +208,8 @@ export class StargateClient { * proofs from such a method. */ public async getAllBalancesUnverified(address: string): Promise { - const path = "/cosmos.bank.Query/AllBalances"; - const request = cosmos.bank.QueryAllBalancesRequest.encode({ - address: Bech32.decode(address).data, - }).finish(); - const responseData = await this.queryClient.queryUnverified(path, request); - const response = cosmos.bank.QueryAllBalancesResponse.decode(responseData); - return response.balances.map(coinFromProto); + const balances = await this.queryClient.bank.balances(address); + return balances.map(coinFromProto); } public async searchTx(query: SearchTxQuery, filter: SearchTxFilter = {}): Promise { diff --git a/packages/stargate/types/queries/bank.d.ts b/packages/stargate/types/queries/bank.d.ts index e55feda0..fd6fb445 100644 --- a/packages/stargate/types/queries/bank.d.ts +++ b/packages/stargate/types/queries/bank.d.ts @@ -3,6 +3,7 @@ import { QueryClient } from "../queryclient"; export interface BankExtension { readonly bank: { readonly balance: (address: string, denom: string) => Promise; + readonly balances: (address: string) => Promise; }; } export declare function setupBankExtension(base: QueryClient): BankExtension;