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