MigrateV3Actions.tsx
1 import { ProtocolAction } from '@aave/contract-helpers'; 2 import { Trans } from '@lingui/macro'; 3 import { useTransactionHandler } from 'src/helpers/useTransactionHandler'; 4 import { UserMigrationReserves } from 'src/hooks/migration/useUserMigrationReserves'; 5 import { UserSummaryForMigration } from 'src/hooks/migration/useUserSummaryForMigration'; 6 import { useRootStore } from 'src/store/root'; 7 8 import { TxActionsWrapper } from '../TxActionsWrapper'; 9 10 export type MigrateV3ActionsProps = { 11 isWrongNetwork: boolean; 12 blocked: boolean; 13 userMigrationReserves: UserMigrationReserves; 14 toUserSummaryForMigration: UserSummaryForMigration; 15 }; 16 17 export const MigrateV3Actions = ({ 18 isWrongNetwork, 19 blocked, 20 userMigrationReserves, 21 toUserSummaryForMigration, 22 }: MigrateV3ActionsProps) => { 23 const migrateWithPermits = useRootStore((store) => store.migrateWithPermits); 24 const migrateWithoutPermits = useRootStore((store) => store.migrateWithoutPermits); 25 const getApprovePermitsForSelectedAssets = useRootStore( 26 (store) => store.getApprovePermitsForSelectedAssets 27 ); 28 const { approval, action, loadingTxns, requiresApproval, mainTxState, approvalTxState } = 29 useTransactionHandler({ 30 handleGetTxns: async () => 31 await migrateWithoutPermits(toUserSummaryForMigration, userMigrationReserves), 32 handleGetPermitTxns: async (signatures, deadline) => 33 await migrateWithPermits( 34 signatures, 35 deadline, 36 toUserSummaryForMigration, 37 userMigrationReserves 38 ), 39 tryPermit: true, 40 permitAction: ProtocolAction.migrateV3, 41 }); 42 43 const handleApproval = async () => { 44 const approvePermitsForSelectedAssets = await getApprovePermitsForSelectedAssets( 45 toUserSummaryForMigration, 46 userMigrationReserves 47 ); 48 approval(approvePermitsForSelectedAssets); 49 }; 50 51 return ( 52 <TxActionsWrapper 53 requiresApproval={requiresApproval} 54 preparingTransactions={loadingTxns} 55 mainTxState={mainTxState} 56 approvalTxState={approvalTxState} 57 isWrongNetwork={isWrongNetwork} 58 handleAction={action} 59 handleApproval={handleApproval} 60 blocked={blocked} 61 actionText={<Trans>Migrate</Trans>} 62 actionInProgressText={<Trans>Migrating</Trans>} 63 tryPermit 64 /> 65 ); 66 };