ClaimRewardsActions.tsx
1 import { ProtocolAction } from '@aave/contract-helpers'; 2 import { Trans } from '@lingui/macro'; 3 import { Reward } from 'src/helpers/types'; 4 import { useTransactionHandler } from 'src/helpers/useTransactionHandler'; 5 import { useAppDataContext } from 'src/hooks/app-data-provider/useAppDataProvider'; 6 import { useRootStore } from 'src/store/root'; 7 8 import { TxActionsWrapper } from '../TxActionsWrapper'; 9 10 export type ClaimRewardsActionsProps = { 11 isWrongNetwork: boolean; 12 blocked: boolean; 13 selectedReward: Reward; 14 }; 15 16 export const ClaimRewardsActions = ({ 17 isWrongNetwork, 18 blocked, 19 selectedReward, 20 }: ClaimRewardsActionsProps) => { 21 const claimRewards = useRootStore((state) => state.claimRewards); 22 const { reserves } = useAppDataContext(); 23 24 const { action, loadingTxns, mainTxState, requiresApproval } = useTransactionHandler({ 25 protocolAction: ProtocolAction.claimRewards, 26 eventTxInfo: { 27 assetName: selectedReward.symbol, 28 amount: selectedReward.balance, 29 }, 30 tryPermit: false, 31 handleGetTxns: async () => { 32 return claimRewards({ isWrongNetwork, blocked, selectedReward, formattedReserves: reserves }); 33 }, 34 skip: Object.keys(selectedReward).length === 0 || blocked, 35 deps: [selectedReward], 36 }); 37 38 return ( 39 <TxActionsWrapper 40 requiresApproval={requiresApproval} 41 blocked={blocked} 42 preparingTransactions={loadingTxns} 43 mainTxState={mainTxState} 44 handleAction={action} 45 actionText={ 46 selectedReward.symbol === 'all' ? ( 47 <Trans>Claim all</Trans> 48 ) : ( 49 <Trans>Claim {selectedReward.symbol}</Trans> 50 ) 51 } 52 actionInProgressText={<Trans>Claiming</Trans>} 53 isWrongNetwork={isWrongNetwork} 54 /> 55 ); 56 };