From 325603d3ca34f519149df0dcab045dbb57b9076d Mon Sep 17 00:00:00 2001 From: songwongtp <16089160+songwongtp@users.noreply.github.com> Date: Fri, 8 Mar 2024 13:58:51 +0700 Subject: [PATCH 1/2] feat: api validator staking provisions --- CHANGELOG.md | 1 + src/lib/app-provider/env.ts | 1 + src/lib/services/validator.ts | 12 ++++++++++++ src/lib/services/validatorService.ts | 14 ++++++++++++++ 4 files changed, 28 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e22d1776a..0124b54c4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -39,6 +39,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Features +- [#816](https://github.com/alleslabs/celatone-frontend/pull/816) api v1 - validator staking provisions - [#815](https://github.com/alleslabs/celatone-frontend/pull/815) api v1 - validator delegators count - [#813](https://github.com/alleslabs/celatone-frontend/pull/813) api v1 - validator historical powers - [#812](https://github.com/alleslabs/celatone-frontend/pull/812) api v1 - validator delegation related txs, proposed blocks diff --git a/src/lib/app-provider/env.ts b/src/lib/app-provider/env.ts index 547ccc360..777eb3abf 100644 --- a/src/lib/app-provider/env.ts +++ b/src/lib/app-provider/env.ts @@ -55,6 +55,7 @@ export enum CELATONE_QUERY_KEYS { VALIDATOR_DELEGATION_RELATED_TXS = "CELATONE_QUERY_VALIDATOR_DELEGATION_RELATED_TXS", VALIDATOR_PROPOSED_BLOCKS = "CELATONE_QUERY_VALIDATOR_PROPOSED_BLOCKS", VALIDATOR_DELEGATORS = "CELATONE_QUERY_VALIDATOR_DELEGATORS", + STAKING_PROVISIONS = "CELATONE_QUERY_STAKING_PROVISIONS", // FAUCET FAUCET_INFO = "CELATONE_QUERY_FAUCET_INFO", // X/GOV diff --git a/src/lib/services/validator.ts b/src/lib/services/validator.ts index a8c5cacdf..96203b16f 100644 --- a/src/lib/services/validator.ts +++ b/src/lib/services/validator.ts @@ -141,6 +141,18 @@ export const getValidators = async ( }) .then(({ data }) => parseWithError(zValidatorsResponse, data)); +const zStakingProvisionsResponse = z.object({ + staking_provisions: zBig, +}); +export type StakingProvisionsResponse = z.infer< + typeof zStakingProvisionsResponse +>; + +export const getStakingProvisions = async (endpoint: string) => + axios + .get(`${endpoint}/staking-provisions`) + .then(({ data }) => parseWithError(zStakingProvisionsResponse, data)); + const zValidatorDataResponse = z .object({ info: zValidatorData.nullable(), diff --git a/src/lib/services/validatorService.ts b/src/lib/services/validatorService.ts index 07ce218a5..9be5acf0b 100644 --- a/src/lib/services/validatorService.ts +++ b/src/lib/services/validatorService.ts @@ -14,6 +14,7 @@ import type { Nullable, Option, Validator, ValidatorAddr } from "lib/types"; import type { BlocksResponse } from "./block"; import type { + StakingProvisionsResponse, ValidatorDataResponse, ValidatorDelegationRelatedTxsResponse, ValidatorsResponse, @@ -21,6 +22,7 @@ import type { } from "./validator"; import { getHistoricalPowers, + getStakingProvisions, getValidator, getValidatorData, getValidatorDelegationRelatedTxs, @@ -123,6 +125,18 @@ export const useValidators = ( ); }; +export const useStakingProvisions = () => { + const endpoint = useBaseApiRoute("validators"); + + return useQuery( + [CELATONE_QUERY_KEYS.STAKING_PROVISIONS, endpoint], + async () => getStakingProvisions(endpoint), + { + retry: 1, + } + ); +}; + export const useValidatorData = (validatorAddress: ValidatorAddr) => { const endpoint = useBaseApiRoute("validators"); From bcebb5005c1fb2caf956a3eac992e8cfe2783b07 Mon Sep 17 00:00:00 2001 From: songwongtp <16089160+songwongtp@users.noreply.github.com> Date: Fri, 8 Mar 2024 14:22:09 +0700 Subject: [PATCH 2/2] fix: renaming --- src/lib/app-provider/env.ts | 2 +- src/lib/services/validator.ts | 2 +- src/lib/services/validatorService.ts | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/lib/app-provider/env.ts b/src/lib/app-provider/env.ts index 777eb3abf..fd2ad5954 100644 --- a/src/lib/app-provider/env.ts +++ b/src/lib/app-provider/env.ts @@ -55,7 +55,7 @@ export enum CELATONE_QUERY_KEYS { VALIDATOR_DELEGATION_RELATED_TXS = "CELATONE_QUERY_VALIDATOR_DELEGATION_RELATED_TXS", VALIDATOR_PROPOSED_BLOCKS = "CELATONE_QUERY_VALIDATOR_PROPOSED_BLOCKS", VALIDATOR_DELEGATORS = "CELATONE_QUERY_VALIDATOR_DELEGATORS", - STAKING_PROVISIONS = "CELATONE_QUERY_STAKING_PROVISIONS", + VALIDATOR_STAKING_PROVISIONS = "CELATONE_QUERY_VALIDATOR_STAKING_PROVISIONS", // FAUCET FAUCET_INFO = "CELATONE_QUERY_FAUCET_INFO", // X/GOV diff --git a/src/lib/services/validator.ts b/src/lib/services/validator.ts index 96203b16f..ded992a9d 100644 --- a/src/lib/services/validator.ts +++ b/src/lib/services/validator.ts @@ -148,7 +148,7 @@ export type StakingProvisionsResponse = z.infer< typeof zStakingProvisionsResponse >; -export const getStakingProvisions = async (endpoint: string) => +export const getValidatorStakingProvisions = async (endpoint: string) => axios .get(`${endpoint}/staking-provisions`) .then(({ data }) => parseWithError(zStakingProvisionsResponse, data)); diff --git a/src/lib/services/validatorService.ts b/src/lib/services/validatorService.ts index 9be5acf0b..1ba2ecc12 100644 --- a/src/lib/services/validatorService.ts +++ b/src/lib/services/validatorService.ts @@ -22,13 +22,13 @@ import type { } from "./validator"; import { getHistoricalPowers, - getStakingProvisions, getValidator, getValidatorData, getValidatorDelegationRelatedTxs, getValidatorDelegators, getValidatorProposedBlocks, getValidators, + getValidatorStakingProvisions, getValidatorUptime, resolveValIdentity, } from "./validator"; @@ -125,12 +125,12 @@ export const useValidators = ( ); }; -export const useStakingProvisions = () => { +export const useValidatorStakingProvisions = () => { const endpoint = useBaseApiRoute("validators"); return useQuery( - [CELATONE_QUERY_KEYS.STAKING_PROVISIONS, endpoint], - async () => getStakingProvisions(endpoint), + [CELATONE_QUERY_KEYS.VALIDATOR_STAKING_PROVISIONS, endpoint], + async () => getValidatorStakingProvisions(endpoint), { retry: 1, }