/ src / components / transactions / Emode / EmodeActions.tsx
EmodeActions.tsx
 1  import { ProtocolAction } from '@aave/contract-helpers';
 2  import { Trans } from '@lingui/macro';
 3  import { useTransactionHandler } from 'src/helpers/useTransactionHandler';
 4  import { useRootStore } from 'src/store/root';
 5  
 6  import { TxActionsWrapper } from '../TxActionsWrapper';
 7  import { EModeCategoryDisplay } from './EmodeModalContent';
 8  import { getEmodeMessage } from './EmodeNaming';
 9  
10  export type EmodeActionsProps = {
11    isWrongNetwork: boolean;
12    blocked: boolean;
13    selectedEmode: number;
14    activeEmode: number;
15    eModes: Record<number, EModeCategoryDisplay>;
16  };
17  
18  export const EmodeActions = ({
19    isWrongNetwork,
20    blocked,
21    selectedEmode,
22    activeEmode,
23    eModes,
24  }: EmodeActionsProps) => {
25    const setUserEMode = useRootStore((state) => state.setUserEMode);
26  
27    const { action, loadingTxns, mainTxState, requiresApproval } = useTransactionHandler({
28      tryPermit: false,
29      handleGetTxns: async () => {
30        return setUserEMode(selectedEmode);
31      },
32      skip: blocked,
33      deps: [selectedEmode],
34      protocolAction: ProtocolAction.setEModeUsage,
35      eventTxInfo: {
36        previousState: getEmodeMessage(eModes[activeEmode].label),
37        newState: getEmodeMessage(eModes[selectedEmode].label),
38      },
39    });
40  
41    return (
42      <TxActionsWrapper
43        requiresApproval={requiresApproval}
44        blocked={blocked}
45        mainTxState={mainTxState}
46        preparingTransactions={loadingTxns}
47        handleAction={action}
48        actionText={
49          activeEmode === 0 ? (
50            <Trans>Enable E-Mode</Trans>
51          ) : selectedEmode !== 0 ? (
52            <Trans>Switch E-Mode</Trans>
53          ) : (
54            <Trans>Disable E-Mode</Trans>
55          )
56        }
57        actionInProgressText={
58          activeEmode === 0 ? (
59            <Trans>Enabling E-Mode</Trans>
60          ) : selectedEmode !== 0 ? (
61            <Trans>Switching E-Mode</Trans>
62          ) : (
63            <Trans>Disabling E-Mode</Trans>
64          )
65        }
66        isWrongNetwork={isWrongNetwork}
67      />
68    );
69  };