Skip to content

Commit 0697d17

Browse files
committed
feat: migrate no borrow with permits continue
1 parent 5b3eaff commit 0697d17

File tree

6 files changed

+61
-42
lines changed

6 files changed

+61
-42
lines changed

pages/v3-migration.page.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ export default function V3Migration() {
4747
onClick={() => toggleSelectedSupplyPosition(reserve.underlyingAsset)}
4848
style={{ color: selectedSupplyAssets[reserve.underlyingAsset] ? 'red' : 'black' }}
4949
>
50-
{reserve.underlyingAsset}:<b>{reserve.underlyingBalanceUSD}</b>
50+
{reserve.underlyingAsset}:<b>{reserve.scaledATokenBalance}</b>
5151
</button>
5252
))}
5353
<div>borrow</div>

src/components/transactions/MigrateV3/MigrateV3Actions.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ export const MigrateV3Actions = () => {
1414
tryPermit: true,
1515
});
1616

17-
const handleApproval = () => {
18-
const approvePermitsForSelectedAssets = getApprovePermitsForSelectedAssets();
17+
const handleApproval = async () => {
18+
const approvePermitsForSelectedAssets = await getApprovePermitsForSelectedAssets();
1919
approval(approvePermitsForSelectedAssets);
2020
};
2121

src/helpers/useTransactionHandler.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,7 @@ export const useTransactionHandler = ({
234234
if (approvalTxes && usePermit && handleGetPermitTxns) {
235235
if (!signatures.length || !signatureDeadline) throw new Error('signature needed');
236236
try {
237+
console.log(signatures, 'signatures');
237238
setMainTxState({ ...mainTxState, loading: true });
238239
const txns = await handleGetPermitTxns(signatures, signatureDeadline);
239240
const params = await txns[0].tx();
@@ -259,6 +260,7 @@ export const useTransactionHandler = ({
259260
action: TxAction.MAIN_ACTION,
260261
});
261262
} catch (error) {
263+
console.log(error, 'error')
262264
const parsedError = getErrorTextFromError(error, TxAction.GAS_ESTIMATION, false);
263265
setTxError(parsedError);
264266
setMainTxState({

src/store/protocolDataSlice.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ export const createProtocolDataSlice: StateCreator<
3838
setCurrentMarket: (market, omitQueryParameterUpdate) => {
3939
if (!availableMarkets.includes(market as CustomMarket)) return;
4040
const nextMarketData = marketsData[market];
41+
console.log(marketsData['fork_proto_polygon_v3'], marketsData);
4142
localStorage.setItem('selectedMarket', market);
4243
if (!omitQueryParameterUpdate) {
4344
setQueryParameter('marketName', market);

src/store/v3MigrationSelectors.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,3 @@ export const selectCurrentMarketV2Reserves = (store: RootStore, timestamp: numbe
1313
const currentChainId = store.currentChainId;
1414
return store.data.get(currentChainId);
1515
};
16-
// export const selectUserApprovalsReservesForMigration = (store: RootStore, timestamp: number) => {
17-
18-
// };

src/store/v3MigrationSlice.ts

Lines changed: 55 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -21,21 +21,22 @@ export type V3MigrationSlice = {
2121
selectedMigrationBorrowAssets: Record<string, boolean>;
2222
migrationServiceInstances: Record<string, V3MigrationHelperService>;
2323
timestamp: number;
24+
approvalPermitsForMigrationAssets: Array<Approval>;
2425
// ACTIONS
2526
generatePermitPayloadForMigrationAsset: (
2627
approval: Approval & {
2728
deadline: string;
2829
}
2930
) => Promise<string>;
30-
getApprovePermitsForSelectedAssets: () => Approval[];
31+
getApprovePermitsForSelectedAssets: () => Promise<Approval[]>;
3132
toggleMigrationSelectedSupplyAsset: (assetName: string) => void;
3233
toggleMigrationSelectedBorrowAsset: (assetName: string) => void;
3334
getMigratorAddress: () => string;
3435
getMigrationServiceInstance: () => V3MigrationHelperService;
3536
migrateWithPermits: (
3637
signature: SignatureLike[],
3738
deadline: BigNumberish
38-
) => EthereumTransactionTypeExtended[];
39+
) => Promise<EthereumTransactionTypeExtended[]>;
3940
migrateWithoutPermits: () => Promise<EthereumTransactionTypeExtended[]>;
4041
_testMigration: () => void;
4142
// migrateSelectedPositions: () => void;
@@ -52,12 +53,14 @@ export const createV3MigrationSlice: StateCreator<
5253
selectedMigrationBorrowAssets: {},
5354
migrationServiceInstances: {},
5455
timestamp: 0,
56+
approvalPermitsForMigrationAssets: [],
5557
generatePermitPayloadForMigrationAsset: async ({ amount, underlyingAsset, deadline }) => {
5658
const user = get().account;
5759
const { getTokenData } = new ERC20Service(get().jsonRpcProvider());
58-
const { name, decimals } = await getTokenData(underlyingAsset);
59-
const convertedAmount = valueToWei(amount, decimals);
60+
61+
const { name } = await getTokenData(underlyingAsset);
6062
const chainId = get().currentChainId;
63+
console.log(name, 'name');
6164

6265
const erc20_2612Service = new ERC20_2612Service(get().jsonRpcProvider());
6366

@@ -68,12 +71,6 @@ export const createV3MigrationSlice: StateCreator<
6871

6972
const typeData = {
7073
types: {
71-
EIP712Domain: [
72-
{ name: 'name', type: 'string' },
73-
{ name: 'version', type: 'string' },
74-
{ name: 'chainId', type: 'uint256' },
75-
{ name: 'verifyingContract', type: 'address' },
76-
],
7774
Permit: [
7875
{ name: 'owner', type: 'address' },
7976
{ name: 'spender', type: 'address' },
@@ -92,7 +89,7 @@ export const createV3MigrationSlice: StateCreator<
9289
message: {
9390
owner: user,
9491
spender: get().getMigratorAddress(),
95-
value: convertedAmount,
92+
value: amount,
9693
nonce,
9794
deadline,
9895
},
@@ -121,19 +118,26 @@ export const createV3MigrationSlice: StateCreator<
121118
})
122119
);
123120
},
124-
getApprovePermitsForSelectedAssets: () => {
121+
getApprovePermitsForSelectedAssets: async () => {
125122
const timestamp = dayjs().unix();
126-
set({ timestamp });
127-
return selectedUserReservesForMigration(get(), timestamp).map(
128-
({ reserve, underlyingBalance }): Approval => {
129-
return {
130-
// TODO: should we allow spending of exact ammount of the reserver?
131-
amount: underlyingBalance,
132-
underlyingAsset: reserve.aTokenAddress,
133-
permitType: 'MIGRATOR',
134-
};
135-
}
123+
const approvalPermitsForMigrationAssets = await Promise.all(
124+
selectedUserReservesForMigration(get(), timestamp).map(
125+
async ({ reserve, underlyingBalance }): Promise<Approval> => {
126+
const { getTokenData } = new ERC20Service(get().jsonRpcProvider());
127+
const { name, decimals } = await getTokenData(reserve.aTokenAddress);
128+
const amount = (Number(underlyingBalance) + 100).toString();
129+
const convertedAmount = valueToWei(amount, decimals);
130+
return {
131+
// TODO: should we allow spending of exact ammount of the reserver?
132+
amount: convertedAmount,
133+
underlyingAsset: reserve.aTokenAddress,
134+
permitType: 'MIGRATOR',
135+
};
136+
}
137+
)
136138
);
139+
set({ approvalPermitsForMigrationAssets });
140+
return approvalPermitsForMigrationAssets;
137141
},
138142
migrateWithoutPermits: () => {
139143
const timestamp = dayjs().unix();
@@ -142,12 +146,14 @@ export const createV3MigrationSlice: StateCreator<
142146
aToken: string;
143147
deadline: number;
144148
amount: string;
149+
underlyingAsset: string;
145150
}[] = selectedUserReservesForMigration(get(), timestamp).map(
146-
({ reserve, underlyingBalance }) => {
151+
({ underlyingAsset, underlyingBalance, reserve }) => {
147152
const deadline = Math.floor(Date.now() / 1000 + 3600);
148153
return {
149-
amount: underlyingBalance,
154+
amount: constants.MaxUint256.toString(),
150155
aToken: reserve.aTokenAddress,
156+
underlyingAsset: underlyingAsset,
151157
// TODO: fow how long to approve?
152158
deadline,
153159
};
@@ -156,20 +162,26 @@ export const createV3MigrationSlice: StateCreator<
156162
const user = get().account;
157163
return get().getMigrationServiceInstance().migrateNoBorrow({ assets, user });
158164
},
159-
migrateWithPermits: (signatures: SignatureLike[], deadline: BigNumberish) => {
160-
const selectedReservers = selectedUserReservesForMigration(get(), get().timestamp);
161-
const permits = selectedReservers.map(({ reserve }, index) => ({
162-
aToken: reserve.aTokenAddress,
163-
value: constants.MaxUint256.toString(),
164-
deadline,
165-
signedPermit: signatures[index],
166-
}));
165+
migrateWithPermits: async (signatures: SignatureLike[], deadline: BigNumberish) => {
166+
const permits = await Promise.all(
167+
get().approvalPermitsForMigrationAssets.map(async ({ amount, underlyingAsset }, index) => {
168+
return {
169+
signedPermit: signatures[index],
170+
deadline,
171+
aToken: underlyingAsset,
172+
value: amount,
173+
};
174+
})
175+
);
167176
// branch out into flashloan or migrate no borrow
168177
// move that to separate instance and save cache the Migrator instance
169-
console.log(permits, 'permits');
170178
const migratorHelperInstance = get().getMigrationServiceInstance();
171179
const user = get().account;
172-
const assets = permits.map((permit) => permit.aToken);
180+
const assets = selectedUserReservesForMigration(get(), get().timestamp).map(
181+
(reserve) => reserve.underlyingAsset
182+
);
183+
await get()._testMigration();
184+
console.log(assets);
173185
return migratorHelperInstance.migrateNoBorrowWithPermits({
174186
user,
175187
assets,
@@ -194,8 +206,15 @@ export const createV3MigrationSlice: StateCreator<
194206
return newMigratorInstance;
195207
},
196208
_testMigration: async () => {
197-
const someAddress = await get().getMigrationServiceInstance().testDeployment();
198-
console.log(someAddress, 'someAddress');
209+
const currentTimestamp = dayjs().unix();
210+
const selectedReservers = selectedUserReservesForMigration(get(), currentTimestamp);
211+
const mappedAddresses = await Promise.all(
212+
selectedReservers.map((reserve) =>
213+
get().getMigrationServiceInstance().testDeployment(reserve.underlyingAsset)
214+
)
215+
);
216+
217+
console.log(mappedAddresses);
199218
},
200219
};
201220
};

0 commit comments

Comments
 (0)