From 426ee4493c19bcb6e3b4c586215d43a4062b07f3 Mon Sep 17 00:00:00 2001 From: Dan Lynch Date: Wed, 16 Nov 2022 18:53:45 -0800 Subject: [PATCH 1/2] rpc hooks example --- package.json | 1 + .../cosmos/bank/v1beta1/query.rpc.query.ts | 63 +++++++++++++++++++ 2 files changed, 64 insertions(+) diff --git a/package.json b/package.json index 8e807a7..2602216 100644 --- a/package.json +++ b/package.json @@ -85,6 +85,7 @@ "@cosmjs/tendermint-rpc": "^0.29.4", "@osmonauts/lcd": "^0.8.0", "@osmonauts/telescope": "^0.75.1", + "@tanstack/react-query": "^4.16.1", "protobufjs": "^6.11.2" } } diff --git a/src/codegen/cosmos/bank/v1beta1/query.rpc.query.ts b/src/codegen/cosmos/bank/v1beta1/query.rpc.query.ts index 3443552..7c137ca 100644 --- a/src/codegen/cosmos/bank/v1beta1/query.rpc.query.ts +++ b/src/codegen/cosmos/bank/v1beta1/query.rpc.query.ts @@ -4,6 +4,13 @@ import { QueryClient, createProtobufRpcClient } from "@cosmjs/stargate"; import { QueryBalanceRequest, QueryBalanceResponse, QueryAllBalancesRequest, QueryAllBalancesResponse, QuerySpendableBalancesRequest, QuerySpendableBalancesResponse, QueryTotalSupplyRequest, QueryTotalSupplyResponse, QuerySupplyOfRequest, QuerySupplyOfResponse, QueryParamsRequest, QueryParamsResponse, QueryDenomMetadataRequest, QueryDenomMetadataResponse, QueryDenomsMetadataRequest, QueryDenomsMetadataResponse, QueryDenomOwnersRequest, QueryDenomOwnersResponse } from "./query"; /** Query defines the gRPC querier service. */ +import { + useQuery, + useMutation, + UseQueryOptions, +} from '@tanstack/react-query' + + export interface Query { /** Balance queries the balance of a single coin for a single account. */ balance(request: QueryBalanceRequest): Promise; @@ -159,5 +166,61 @@ export const createRpcQueryExtension = (base: QueryClient) => { return queryService.denomOwners(request); } + }; +}; + +export interface ReactQueryParams { + options?: UseQueryOptions; +} + +export interface UseBalanceQuery extends ReactQueryParams { + args: QueryBalanceRequest; +} + +export const createRpcQueryHooks = (base: QueryClient) => { + const rpc = createProtobufRpcClient(base); + const queryService = new QueryClientImpl(rpc); + return { + useBalance({ + args, + options + }): UseBalanceQuery { + return useQuery(["queryBalance", args], () => { + return queryService.balance(args) + }, options); + }, + + // useAllBalances(request: QueryAllBalancesRequest): Promise { + // return queryService.allBalances(request); + // }, + + // useSpendableBalances(request: QuerySpendableBalancesRequest): Promise { + // return queryService.spendableBalances(request); + // }, + + // useTotalSupply(request?: QueryTotalSupplyRequest): Promise { + // return queryService.totalSupply(request); + // }, + + // useSupplyOf(request: QuerySupplyOfRequest): Promise { + // return queryService.supplyOf(request); + // }, + + // useParams(request?: QueryParamsRequest): Promise { + // return queryService.params(request); + // }, + + // useDenomMetadata(request: QueryDenomMetadataRequest): Promise { + // return queryService.denomMetadata(request); + // }, + + // denomsMetadata(request?: QueryDenomsMetadataRequest): Promise { + // return queryService.denomsMetadata(request); + // }, + + // useDenomOwners(request: QueryDenomOwnersRequest): Promise { + // return queryService.denomOwners(request); + // } + }; }; \ No newline at end of file From 5ac08a617d26dbef09be13b654e88b919a54224d Mon Sep 17 00:00:00 2001 From: Dan Lynch Date: Wed, 16 Nov 2022 19:01:41 -0800 Subject: [PATCH 2/2] v1 --- src/codegen/cosmos/bank/v1beta1/query.rpc.query.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/codegen/cosmos/bank/v1beta1/query.rpc.query.ts b/src/codegen/cosmos/bank/v1beta1/query.rpc.query.ts index 7c137ca..c8b0fd8 100644 --- a/src/codegen/cosmos/bank/v1beta1/query.rpc.query.ts +++ b/src/codegen/cosmos/bank/v1beta1/query.rpc.query.ts @@ -184,7 +184,7 @@ export const createRpcQueryHooks = (base: QueryClient) => { useBalance({ args, options - }): UseBalanceQuery { + }) { return useQuery(["queryBalance", args], () => { return queryService.balance(args) }, options);