diff --git a/dappnode/hooks/useLastRewardsFrame-api.ts b/dappnode/hooks/useLastRewardsFrame-api.ts new file mode 100644 index 00000000..96efb235 --- /dev/null +++ b/dappnode/hooks/useLastRewardsFrame-api.ts @@ -0,0 +1,50 @@ +import { useLidoSWR } from '@lido-sdk/react'; +import { STRATEGY_CONSTANT } from 'consts/swr-strategies'; +import { fetchWithRetry } from 'dappnode/utils/fetchWithRetry'; +import useDappnodeUrls from 'dappnode/hooks/use-dappnode-urls'; + +interface Event { + RefSlot: number; + Hash: number[]; + Raw: { + address: string; + topics: string[]; + data: string; + blockNumber: string; + transactionHash: string; + transactionIndex: string; + blockHash: string; + logIndex: string; + removed: boolean; + }; +} + +export const useLastRewrdsTx = (config = STRATEGY_CONSTANT) => { + const { backendUrl } = useDappnodeUrls(); + + return useLidoSWR( + ['fee-oracle-report-tx'], + async () => { + const url = `${backendUrl}/api/v0/events_indexer/processing_started`; + const options = { + method: 'GET', + headers: { 'Content-Type': 'application/json' }, + }; + const response = await fetchWithRetry(url, options, 5000); + if (!response.ok) { + throw new Error('Failed to fetch processing started events'); + } + const events: Event[] = await response.json(); + const txs = events + .sort( + (a, b) => + parseInt(a.Raw.blockNumber, 16) - parseInt(b.Raw.blockNumber, 16), + ) + .map((event) => { + return event.Raw.transactionHash; + }); + return txs[txs.length - 1]; + }, + config, + ); +}; diff --git a/features/dashboard/bond/last-rewards.tsx b/features/dashboard/bond/last-rewards.tsx index e05582b2..f462bedb 100644 --- a/features/dashboard/bond/last-rewards.tsx +++ b/features/dashboard/bond/last-rewards.tsx @@ -17,7 +17,6 @@ import { getPrevRewardsFrame, useLastOperatorRewards, useLastRewardsSlot, - useLastRewrdsTx, useNodeOperatorInfo, } from 'shared/hooks'; import { formatDate, formatPercent } from 'utils'; @@ -29,6 +28,7 @@ import { RowHeader, RowTitle, } from './styles'; +import { useLastRewrdsTx } from 'dappnode/hooks/useLastRewardsFrame-api'; // DAPPNODE export const LastRewards: FC = () => { const { data: lastRewards, initialLoading: isLoading } = diff --git a/shared/hooks/useLastRewardsFrame.ts b/shared/hooks/useLastRewardsFrame.ts index 41cc7ba5..1c399a51 100644 --- a/shared/hooks/useLastRewardsFrame.ts +++ b/shared/hooks/useLastRewardsFrame.ts @@ -143,6 +143,7 @@ export const useLastOperatorRewards = () => { ); }; +// DAPPNODE: Replaced by 'dappnode/hooks/useLastRewardsFrame-api' export const useLastRewrdsTx = (config = STRATEGY_CONSTANT) => { const feeOracle = useCSFeeOracleRPC(); const { deploymentBlockNumber } = getCsmConstants();