From 51f4b1b9f4f14e057ec77f6410f14a2d7040e61f Mon Sep 17 00:00:00 2001
From: pradyuman-verma <pradyumnverma27@gmail.com>
Date: Sat, 18 Jun 2022 19:12:19 +0530
Subject: [PATCH] aave v3: fixed swapBorrowRate bug

---
 contracts/arbitrum/connectors/aave/v3/main.sol  | 6 ++----
 contracts/avalanche/connectors/aave/v3/main.sol | 6 ++----
 contracts/fantom/connectors/aave/v3/main.sol    | 5 ++---
 contracts/optimism/connectors/aave/v3/main.sol  | 6 ++----
 contracts/polygon/connectors/aave/v3/main.sol   | 6 ++----
 5 files changed, 10 insertions(+), 19 deletions(-)

diff --git a/contracts/arbitrum/connectors/aave/v3/main.sol b/contracts/arbitrum/connectors/aave/v3/main.sol
index d5ed5c1c..8cf3db0b 100644
--- a/contracts/arbitrum/connectors/aave/v3/main.sol
+++ b/contracts/arbitrum/connectors/aave/v3/main.sol
@@ -433,7 +433,7 @@ abstract contract AaveResolver is Events, Helpers {
 	 * @dev Swap borrow rate mode
 	 * @notice Swaps user borrow rate mode between variable and stable
 	 * @param token The address of the token to swap borrow rate.(For ETH: 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE)
-	 * @param rateMode Desired borrow rate mode. (Stable = 1, Variable = 2)
+	 * @param rateMode current rate mode. (Stable = 1, Variable = 2)
 	 */
 	function swapBorrowRateMode(address token, uint256 rateMode)
 		external
@@ -442,12 +442,10 @@ abstract contract AaveResolver is Events, Helpers {
 	{
 		AaveInterface aave = AaveInterface(aaveProvider.getPool());
 
-		uint256 currentRateMode = rateMode == 1 ? 2 : 1;
-
 		bool isEth = token == ethAddr;
 		address _token = isEth ? wethAddr : token;
 
-		if (getPaybackBalance(_token, currentRateMode) > 0) {
+		if (getPaybackBalance(_token, rateMode) > 0) {
 			aave.swapBorrowRateMode(_token, rateMode);
 		}
 
diff --git a/contracts/avalanche/connectors/aave/v3/main.sol b/contracts/avalanche/connectors/aave/v3/main.sol
index f92cb0b6..c84887b7 100644
--- a/contracts/avalanche/connectors/aave/v3/main.sol
+++ b/contracts/avalanche/connectors/aave/v3/main.sol
@@ -434,7 +434,7 @@ abstract contract AaveResolver is Events, Helpers {
 	 * @dev Swap borrow rate mode
 	 * @notice Swaps user borrow rate mode between variable and stable
 	 * @param token The address of the token to swap borrow rate.(For avax: 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE)
-	 * @param rateMode Desired borrow rate mode. (Stable = 1, Variable = 2)
+	 * @param rateMode Current rate mode (Stable = 1, Variable = 2)
 	 */
 	function swapBorrowRateMode(address token, uint256 rateMode)
 		external
@@ -443,12 +443,10 @@ abstract contract AaveResolver is Events, Helpers {
 	{
 		AaveInterface aave = AaveInterface(aaveProvider.getPool());
 
-		uint256 currentRateMode = rateMode == 1 ? 2 : 1;
-
 		bool isAVAX = token == avaxAddr;
 		address _token = isAVAX ? wavaxAddr : token;
 
-		if (getPaybackBalance(_token, currentRateMode) > 0) {
+		if (getPaybackBalance(_token, rateMode) > 0) {
 			aave.swapBorrowRateMode(_token, rateMode);
 		}
 
diff --git a/contracts/fantom/connectors/aave/v3/main.sol b/contracts/fantom/connectors/aave/v3/main.sol
index bc4038bd..cb999a53 100644
--- a/contracts/fantom/connectors/aave/v3/main.sol
+++ b/contracts/fantom/connectors/aave/v3/main.sol
@@ -432,7 +432,7 @@ abstract contract AaveResolver is Events, Helpers {
 	 * @dev Swap borrow rate mode
 	 * @notice Swaps user borrow rate mode between variable and stable
 	 * @param token The address of the token to swap borrow rate.(For ftm: 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE)
-	 * @param rateMode Desired borrow rate mode. (Stable = 1, Variable = 2)
+	 * @param rateMode Current rate mode. (Stable = 1, Variable = 2)
 	 */
 	function swapBorrowRateMode(address token, uint256 rateMode)
 		external
@@ -441,11 +441,10 @@ abstract contract AaveResolver is Events, Helpers {
 	{
 		AaveInterface aave = AaveInterface(aaveProvider.getPool());
 
-		uint256 currentRateMode = rateMode == 1 ? 2 : 1;
 		bool isFTM = token == ftmAddr;
 		address _token = isFTM ? wftmAddr : token;
 
-		if (getPaybackBalance(_token, currentRateMode) > 0) {
+		if (getPaybackBalance(_token, rateMode) > 0) {
 			aave.swapBorrowRateMode(_token, rateMode);
 		}
 
diff --git a/contracts/optimism/connectors/aave/v3/main.sol b/contracts/optimism/connectors/aave/v3/main.sol
index 639f9deb..59a26ef8 100644
--- a/contracts/optimism/connectors/aave/v3/main.sol
+++ b/contracts/optimism/connectors/aave/v3/main.sol
@@ -434,7 +434,7 @@ abstract contract AaveResolver is Events, Helpers {
 	 * @dev Swap borrow rate mode
 	 * @notice Swaps user borrow rate mode between variable and stable
 	 * @param token The address of the token to swap borrow rate.(For ETH: 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE)
-	 * @param rateMode Desired borrow rate mode. (Stable = 1, Variable = 2)
+	 * @param rateMode Current borrow rate (Stable = 1, Variable = 2)
 	 */
 	function swapBorrowRateMode(address token, uint256 rateMode)
 		external
@@ -443,12 +443,10 @@ abstract contract AaveResolver is Events, Helpers {
 	{
 		AaveInterface aave = AaveInterface(aaveProvider.getPool());
 
-		uint256 currentRateMode = rateMode == 1 ? 2 : 1;
-
 		bool isEth = token == ethAddr;
 		address _token = isEth ? wethAddr : token;
 
-		if (getPaybackBalance(_token, currentRateMode) > 0) {
+		if (getPaybackBalance(_token, rateMode) > 0) {
 			aave.swapBorrowRateMode(_token, rateMode);
 		}
 
diff --git a/contracts/polygon/connectors/aave/v3/main.sol b/contracts/polygon/connectors/aave/v3/main.sol
index 535269a0..84092977 100644
--- a/contracts/polygon/connectors/aave/v3/main.sol
+++ b/contracts/polygon/connectors/aave/v3/main.sol
@@ -434,7 +434,7 @@ abstract contract AaveResolver is Events, Helpers {
 	 * @dev Swap borrow rate mode
 	 * @notice Swaps user borrow rate mode between variable and stable
 	 * @param token The address of the token to swap borrow rate.(For matic: 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE)
-	 * @param rateMode Desired borrow rate mode. (Stable = 1, Variable = 2)
+	 * @param rateMode Current borrow rate s(Stable = 1, Variable = 2)
 	 */
 	function swapBorrowRateMode(address token, uint256 rateMode)
 		external
@@ -443,12 +443,10 @@ abstract contract AaveResolver is Events, Helpers {
 	{
 		AaveInterface aave = AaveInterface(aaveProvider.getPool());
 
-		uint256 currentRateMode = rateMode == 1 ? 2 : 1;
-
 		bool isMatic = token == maticAddr;
 		address _token = isMatic ? wmaticAddr : token;
 
-		if (getPaybackBalance(_token, currentRateMode) > 0) {
+		if (getPaybackBalance(_token, rateMode) > 0) {
 			aave.swapBorrowRateMode(_token, rateMode);
 		}