Merge pull request #1086 from cosmos/more-then-100-getContracts
getContracts(): Support more than 100 per code ID
This commit is contained in:
commit
da246fb35e
@ -44,7 +44,8 @@ and this project adheres to
|
||||
dependencies. This should also reduce the bundle size as only the English
|
||||
wordlist is shipped. ([#966])
|
||||
- @cosmjs/cli: Rename binary `cosmwasm-cli` to `cosmjs-cli` ([#1033]).
|
||||
- @cosmjs/stargate & @cosmjs/cosmwasm-stargate: Removed default types from AminoTypes. ([1079])
|
||||
- @cosmjs/stargate & @cosmjs/cosmwasm-stargate: Removed default types from AminoTypes. ([#1079])
|
||||
- @cosmjs/cosmwasm-stargate: getCodes() automatically loops through all pagination pages now. ([#1077])
|
||||
|
||||
[#927]: https://github.com/cosmos/cosmjs/issues/927
|
||||
[#955]: https://github.com/cosmos/cosmjs/issues/955
|
||||
@ -56,6 +57,7 @@ and this project adheres to
|
||||
[#1026]: https://github.com/cosmos/cosmjs/issues/1026
|
||||
[#1033]: https://github.com/cosmos/cosmjs/issues/1033
|
||||
[#1053]: https://github.com/cosmos/cosmjs/issues/1053
|
||||
[#1077]: https://github.com/cosmos/cosmjs/issues/1077
|
||||
[#1079]: https://github.com/cosmos/cosmjs/issues/1079
|
||||
|
||||
### Removed
|
||||
|
||||
@ -25,7 +25,7 @@ import {
|
||||
} from "@cosmjs/stargate";
|
||||
import { Tendermint34Client, toRfc3339WithNanoseconds } from "@cosmjs/tendermint-rpc";
|
||||
import { assert, sleep } from "@cosmjs/utils";
|
||||
import { CodeInfoResponse } from "cosmjs-types/cosmwasm/wasm/v1/query";
|
||||
import { CodeInfoResponse, QueryContractsByCodeResponse } from "cosmjs-types/cosmwasm/wasm/v1/query";
|
||||
import { ContractCodeHistoryOperationType } from "cosmjs-types/cosmwasm/wasm/v1/types";
|
||||
|
||||
import { JsonObject, setupWasmExtension, WasmExtension } from "./modules";
|
||||
@ -334,10 +334,24 @@ export class CosmWasmClient {
|
||||
return codeDetails;
|
||||
}
|
||||
|
||||
/**
|
||||
* getContracts() returns all contract instances for one code and is just looping through all pagination pages.
|
||||
*
|
||||
* This is potentially inefficient and advanced apps should consider creating
|
||||
* their own query client to handle pagination together with the app's screens.
|
||||
*/
|
||||
public async getContracts(codeId: number): Promise<readonly string[]> {
|
||||
// TODO: handle pagination - accept as arg or auto-loop
|
||||
const { contracts } = await this.forceGetQueryClient().wasm.listContractsByCodeId(codeId);
|
||||
return contracts;
|
||||
const allContracts = [];
|
||||
let startAtKey: Uint8Array | undefined = undefined;
|
||||
do {
|
||||
const { contracts, pagination }: QueryContractsByCodeResponse =
|
||||
await this.forceGetQueryClient().wasm.listContractsByCodeId(codeId, startAtKey);
|
||||
const loadedContracts = contracts || [];
|
||||
allContracts.push(...loadedContracts);
|
||||
startAtKey = pagination?.nextKey;
|
||||
} while (startAtKey?.length !== 0 && startAtKey !== undefined);
|
||||
|
||||
return allContracts;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Loading…
Reference in New Issue
Block a user