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 };