@@ -221,23 +221,34 @@ contract EulerSwap is IEulerSwap, EVCUtil {
221
221
/// @dev After successful deposit, if the user has any outstanding controller-enabled debt, it attempts to repay it.
222
222
/// @dev If all debt is repaid, the controller is automatically disabled to reduce gas costs in future operations.
223
223
function depositAssets (address vault , uint256 amount ) internal returns (uint256 ) {
224
- try IEVault (vault).deposit (amount, eulerAccount) {}
225
- catch (bytes memory reason ) {
226
- require (bytes4 (reason) == EVKErrors.E_ZeroShares.selector , DepositFailure (reason));
227
- return 0 ;
228
- }
224
+ uint256 debt = myDebt (vault);
225
+ uint256 deposited;
229
226
230
- if (IEVC (evc). isControllerEnabled (eulerAccount, vault) ) {
231
- IEVC (evc). call (
232
- vault, eulerAccount, 0 , abi.encodeCall (IBorrowing.repayWithShares, ( type ( uint256 ).max, eulerAccount))
233
- );
227
+ if (debt > 0 ) {
228
+ uint256 repayAmount = amount > debt ? debt : amount;
229
+
230
+ IEVault (vault). repay (repayAmount, eulerAccount );
234
231
235
- if (myDebt (vault) == 0 ) {
232
+ amount -= repayAmount;
233
+ debt -= repayAmount;
234
+ deposited += repayAmount;
235
+
236
+ if (debt == 0 ) {
236
237
IEVC (evc).call (vault, eulerAccount, 0 , abi.encodeCall (IRiskManager.disableController, ()));
237
238
}
238
239
}
239
240
240
- return amount;
241
+ if (amount > 0 ) {
242
+ try IEVault (vault).deposit (amount, eulerAccount) {}
243
+ catch (bytes memory reason ) {
244
+ require (bytes4 (reason) == EVKErrors.E_ZeroShares.selector , DepositFailure (reason));
245
+ return deposited;
246
+ }
247
+
248
+ deposited += amount;
249
+ }
250
+
251
+ return deposited;
241
252
}
242
253
243
254
/// @notice Approves tokens for a given vault, supporting both standard approvals and permit2
0 commit comments