@@ -47,31 +47,17 @@ export function usePeriodStats(period: Ref<number>) {
4747 return combinedData . filter ( ( data ) => data !== undefined ) as DappStatistics [ ] ;
4848 } ) ;
4949
50- const getPeriodEndBlock = ( period : number , currentPeriod : number ) : number => {
51- const periodStartBlock = PERIOD1_START_BLOCKS . get ( currentNetworkName . value . toLowerCase ( ) ) ;
52-
53- if ( periodStartBlock ) {
54- if ( period < currentPeriod ) {
55- const {
56- standardEraLength,
57- standardErasPerBuildAndEarnPeriod,
58- standardErasPerVotingPeriod,
59- } = eraLengths . value ;
60- return (
61- periodStartBlock +
62- ( standardErasPerBuildAndEarnPeriod + standardErasPerVotingPeriod ) *
63- standardEraLength *
64- period -
65- 1
66- ) ;
67- }
68-
50+ const getPeriodEndBlock = async ( period : number ) : Promise < number > => {
51+ try {
52+ const tokenApiRepository = container . get < ITokenApiRepository > ( Symbols . TokenApiRepository ) ;
53+ const networkName = currentNetworkName . value . toLowerCase ( ) ;
54+ const range = await tokenApiRepository . getPeriodBlockRange ( networkName , period ) ;
55+
56+ return range . end ?? currentBlock . value ;
57+ } catch ( error ) {
58+ console . error ( 'Failed to get period end block' , error ) ;
6959 return currentBlock . value ;
7060 }
71-
72- throw new Error (
73- `Can't determine dApp staking start block for network ${ currentNetworkName . value } `
74- ) ;
7561 } ;
7662
7763 const calculateTvlRatio = async ( block : number ) : Promise < void > => {
@@ -82,14 +68,12 @@ export function usePeriodStats(period: Ref<number>) {
8268 ) ;
8369
8470 const allDappsId = allDapps . value . map ( ( dapp ) => dapp . chain . id ) ;
71+ const periodEndBlock = await getPeriodEndBlock ( period . value ) ;
8572 const [ stats , totalIssuance , periodInfo , stakes ] = await Promise . all ( [
8673 repository . getStakingPeriodStatistics ( currentNetworkName . value . toLowerCase ( ) , period . value ) ,
8774 balancesRepository . getTotalIssuance ( block ) ,
8875 dappStakingRepository . getCurrentEraInfo ( block ) ,
89- dappStakingRepository . getContractsStake (
90- allDappsId ,
91- getPeriodEndBlock ( period . value , protocolState . value ?. periodInfo . number ?? period . value )
92- ) ,
76+ dappStakingRepository . getContractsStake ( allDappsId , periodEndBlock ) ,
9377 ] ) ;
9478
9579 // Update skates receiver from indexer although the indexer data is correct, we are using on chain data
@@ -126,10 +110,7 @@ export function usePeriodStats(period: Ref<number>) {
126110 eraLengths . value . standardEraLength
127111 ) {
128112 try {
129- const periodEndBlock = getPeriodEndBlock (
130- period . value ,
131- protocolState . value ?. periodInfo . number ?? period . value
132- ) ;
113+ const periodEndBlock = await getPeriodEndBlock ( period . value ) ;
133114 const stakingService = container . get < IDappStakingService > ( Symbols . DappStakingServiceV3 ) ;
134115
135116 const block = Math . min ( periodEndBlock , currentBlock . value ) - 1 ;
0 commit comments