From e680e6af705fd19285c10605489bd2dc2c2fbb5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Molina=20Colmenero?= Date: Mon, 15 Apr 2024 23:22:04 +0200 Subject: [PATCH] use runtime APIs to query block time (#10457) * use runtime APIs to query block time * rename api object * restore calcInterval function * fix: import * improve types --- packages/react-hooks/src/useBlockInterval.ts | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/packages/react-hooks/src/useBlockInterval.ts b/packages/react-hooks/src/useBlockInterval.ts index 667182e304..a4230b65b5 100644 --- a/packages/react-hooks/src/useBlockInterval.ts +++ b/packages/react-hooks/src/useBlockInterval.ts @@ -2,6 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 import type { ApiPromise } from '@polkadot/api'; +import type { BabeGenesisConfiguration } from '@polkadot/types/interfaces/babe'; import { useMemo } from 'react'; @@ -10,6 +11,7 @@ import { BN, BN_THOUSAND, BN_TWO, bnMin } from '@polkadot/util'; import { createNamedHook } from './createNamedHook.js'; import { useApi } from './useApi.js'; import { A_DAY } from './useBlocksPerDays.js'; +import { useCall } from './useCall.js'; // Some chains incorrectly use these, i.e. it is set to values such as 0 or even 2 // Use a low minimum validity threshold to check these against @@ -40,9 +42,15 @@ function calcInterval (api: ApiPromise): BN { function useBlockIntervalImpl (apiOverride?: ApiPromise | null): BN { const { api } = useApi(); + const currApi = apiOverride || api; + const blockTimeAura = useCall(currApi.call.auraApi?.slotDuration && currApi.call.auraApi.slotDuration, []); + const blockTimeBabe = useCall(currApi.call.babeApi?.configuration && currApi.call.babeApi.configuration, [], { + transform: (data: BabeGenesisConfiguration | undefined) => data?.slotDuration + }); + return useMemo( - () => calcInterval(apiOverride || api), - [api, apiOverride] + () => (blockTimeAura || blockTimeBabe) ?? calcInterval(currApi), + [blockTimeAura, blockTimeBabe, currApi] ); }