/ src / components / transactions / ClaimRewards / ClaimRewardsActions.tsx
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  };