Code Refactoring

This commit is contained in:
Thrilok Kumar 2020-07-18 00:56:34 +05:30
parent 9d8714a163
commit c7e0bcf99a

View File

@ -125,16 +125,16 @@ contract Helpers is DSMath {
(_type, _id) = (1, 8); (_type, _id) = (1, 8);
} }
function _transfer(address payable to, address token, uint _amt) internal { function _transfer(address payable to, IERC20 token, uint _amt) internal {
token == getAddressETH() ? address(token) == getAddressETH() ?
to.transfer(_amt) : to.transfer(_amt) :
IERC20(token).safeTransfer(to, _amt); token.safeTransfer(to, _amt);
} }
function _getBalance(address token) internal view returns (uint256) { function _getBalance(IERC20 token) internal view returns (uint256) {
return token == getAddressETH() ? return address(token) == getAddressETH() ?
address(this).balance : address(this).balance :
TokenInterface(token).balanceOf(address(this)); token.balanceOf(address(this));
} }
} }
@ -154,9 +154,9 @@ contract LiquidityHelpers is Helpers {
return 0x06cB7C24990cBE6b9F99982f975f9147c000fec6; // TODO - change return 0x06cB7C24990cBE6b9F99982f975f9147c000fec6; // TODO - change
} }
function calculateTotalFeeAmt(address token, uint amt) internal view returns (uint totalAmt) { function calculateTotalFeeAmt(IERC20 token, uint amt) internal view returns (uint totalAmt) {
uint fee = InstaPoolFeeInterface(getInstaPoolFeeAddr()).fee(); uint fee = InstaPoolFeeInterface(getInstaPoolFeeAddr()).fee();
uint flashAmt = LiqudityInterface(getLiquidityAddress()).borrowedToken(token); uint flashAmt = LiqudityInterface(getLiquidityAddress()).borrowedToken(address(token));
if (fee == 0) { if (fee == 0) {
totalAmt = amt; totalAmt = amt;
} else { } else {
@ -165,7 +165,7 @@ contract LiquidityHelpers is Helpers {
} }
} }
function calculateFeeAmt(address token, uint amt) internal view returns (address feeCollector, uint feeAmt) { function calculateFeeAmt(IERC20 token, uint amt) internal view returns (address feeCollector, uint feeAmt) {
InstaPoolFeeInterface feeContract = InstaPoolFeeInterface(getInstaPoolFeeAddr()); InstaPoolFeeInterface feeContract = InstaPoolFeeInterface(getInstaPoolFeeAddr());
uint fee = feeContract.fee(); uint fee = feeContract.fee();
feeCollector = feeContract.feeCollector(); feeCollector = feeContract.feeCollector();
@ -181,7 +181,7 @@ contract LiquidityHelpers is Helpers {
} }
} }
function calculateFeeAmtOrigin(address token, uint amt) function calculateFeeAmtOrigin(IERC20 token, uint amt)
internal internal
view view
returns ( returns (
@ -223,8 +223,9 @@ contract LiquidityManage is LiquidityHelpers {
_amt = _amt == uint(-1) ? address(this).balance : _amt; _amt = _amt == uint(-1) ? address(this).balance : _amt;
ethAmt = _amt; ethAmt = _amt;
} else { } else {
_amt = _amt == uint(-1) ? TokenInterface(token).balanceOf(address(this)) : _amt; TokenInterface tokenContract = TokenInterface(token);
TokenInterface(token).approve(getLiquidityAddress(), _amt); _amt = _amt == uint(-1) ? tokenContract.balanceOf(address(this)) : _amt;
tokenContract.approve(getLiquidityAddress(), _amt);
} }
LiqudityInterface(getLiquidityAddress()).deposit.value(ethAmt)(token, _amt); LiqudityInterface(getLiquidityAddress()).deposit.value(ethAmt)(token, _amt);
@ -316,7 +317,7 @@ contract LiquidityAccessHelper is EventHelpers {
function addFeeAmount(address token, uint amt, uint getId, uint setId) external payable { function addFeeAmount(address token, uint amt, uint getId, uint setId) external payable {
uint _amt = getUint(getId, amt); uint _amt = getUint(getId, amt);
require(_amt != 0, "amt-is-0"); require(_amt != 0, "amt-is-0");
uint totalFee = calculateTotalFeeAmt(token, _amt); uint totalFee = calculateTotalFeeAmt(IERC20(token), _amt);
setUint(setId, totalFee); setUint(setId, totalFee);
} }
@ -354,16 +355,17 @@ contract LiquidityAccess is LiquidityAccessHelper {
function flashPayback(address token, uint getId, uint setId) external payable { function flashPayback(address token, uint getId, uint setId) external payable {
LiqudityInterface liquidityContract = LiqudityInterface(getLiquidityAddress()); LiqudityInterface liquidityContract = LiqudityInterface(getLiquidityAddress());
uint _amt = liquidityContract.borrowedToken(token); uint _amt = liquidityContract.borrowedToken(token);
IERC20 tokenContract = IERC20(token);
(address feeCollector, uint feeAmt) = calculateFeeAmt(token, _amt); (address feeCollector, uint feeAmt) = calculateFeeAmt(tokenContract, _amt);
address[] memory _tknAddrs = new address[](1); address[] memory _tknAddrs = new address[](1);
_tknAddrs[0] = token; _tknAddrs[0] = token;
_transfer(payable(address(liquidityContract)), token, _amt); _transfer(payable(address(liquidityContract)), tokenContract, _amt);
liquidityContract.returnLiquidity(_tknAddrs); liquidityContract.returnLiquidity(_tknAddrs);
if (feeAmt > 0) _transfer(payable(feeCollector), token, feeAmt); if (feeAmt > 0) _transfer(payable(feeCollector), tokenContract, feeAmt);
setUint(setId, _amt); setUint(setId, _amt);
emitFlashPayback(token, _amt, feeAmt, getId, setId); emitFlashPayback(token, _amt, feeAmt, getId, setId);
@ -380,18 +382,19 @@ contract LiquidityAccess is LiquidityAccessHelper {
require(origin != address(0), "origin-is-address(0)"); require(origin != address(0), "origin-is-address(0)");
LiqudityInterface liquidityContract = LiqudityInterface(getLiquidityAddress()); LiqudityInterface liquidityContract = LiqudityInterface(getLiquidityAddress());
uint _amt = liquidityContract.borrowedToken(token); uint _amt = liquidityContract.borrowedToken(token);
IERC20 tokenContract = IERC20(token);
(address feeCollector, uint poolFeeAmt, uint originFeeAmt) = calculateFeeAmtOrigin(token, _amt); (address feeCollector, uint poolFeeAmt, uint originFeeAmt) = calculateFeeAmtOrigin(tokenContract, _amt);
address[] memory _tknAddrs = new address[](1); address[] memory _tknAddrs = new address[](1);
_tknAddrs[0] = token; _tknAddrs[0] = token;
_transfer(payable(address(liquidityContract)), token, _amt); _transfer(payable(address(liquidityContract)), tokenContract, _amt);
liquidityContract.returnLiquidity(_tknAddrs); liquidityContract.returnLiquidity(_tknAddrs);
if (poolFeeAmt > 0) { if (poolFeeAmt > 0) {
_transfer(payable(feeCollector), token, poolFeeAmt); _transfer(payable(feeCollector), tokenContract, poolFeeAmt);
_transfer(payable(origin), token, originFeeAmt); _transfer(payable(origin), tokenContract, originFeeAmt);
} }
setUint(setId, _amt); setUint(setId, _amt);
@ -442,11 +445,12 @@ contract LiquidityAccessMulti is LiquidityAccess {
for (uint i = 0; i < _length; i++) { for (uint i = 0; i < _length; i++) {
uint _amt = liquidityContract.borrowedToken(tokens[i]); uint _amt = liquidityContract.borrowedToken(tokens[i]);
(address feeCollector, uint feeAmt) = calculateFeeAmt(tokens[i], _amt); IERC20 tokenContract = IERC20(tokens[i]);
(address feeCollector, uint feeAmt) = calculateFeeAmt(tokenContract, _amt);
_transfer(payable(address(liquidityContract)), tokens[i], _amt); _transfer(payable(address(liquidityContract)), tokenContract, _amt);
if (feeAmt > 0) _transfer(payable(feeCollector), tokens[i], feeAmt); if (feeAmt > 0) _transfer(payable(feeCollector), tokenContract, feeAmt);
setUint(setId[i], _amt); setUint(setId[i], _amt);
@ -469,13 +473,15 @@ contract LiquidityAccessMulti is LiquidityAccess {
for (uint i = 0; i < _length; i++) { for (uint i = 0; i < _length; i++) {
uint _amt = liquidityContract.borrowedToken(tokens[i]); uint _amt = liquidityContract.borrowedToken(tokens[i]);
(address feeCollector, uint poolFeeAmt, uint originFeeAmt) = calculateFeeAmtOrigin(tokens[i], _amt); IERC20 tokenContract = IERC20(tokens[i]);
_transfer(payable(address(liquidityContract)), tokens[i], _amt); (address feeCollector, uint poolFeeAmt, uint originFeeAmt) = calculateFeeAmtOrigin(tokenContract, _amt);
_transfer(payable(address(liquidityContract)), tokenContract, _amt);
if (poolFeeAmt > 0) { if (poolFeeAmt > 0) {
_transfer(payable(feeCollector), tokens[i], poolFeeAmt); _transfer(payable(feeCollector), tokenContract, poolFeeAmt);
_transfer(payable(origin), tokens[i], originFeeAmt); _transfer(payable(origin), tokenContract, originFeeAmt);
} }
setUint(setId[i], _amt); setUint(setId[i], _amt);
@ -483,7 +489,6 @@ contract LiquidityAccessMulti is LiquidityAccess {
emitFlashPayback(tokens[i], _amt, poolFeeAmt, getId[i], setId[i]); emitFlashPayback(tokens[i], _amt, poolFeeAmt, getId[i], setId[i]);
emitOriginFeeCollected(origin, tokens[i], _amt, originFeeAmt); emitOriginFeeCollected(origin, tokens[i], _amt, originFeeAmt);
} }
liquidityContract.returnLiquidity(tokens); liquidityContract.returnLiquidity(tokens);
} }
} }