Skip to content

Commit

Permalink
refractor code
Browse files Browse the repository at this point in the history
  • Loading branch information
tubackkhoa committed Feb 27, 2023
1 parent e2fdcfa commit b63345a
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 46 deletions.
47 changes: 3 additions & 44 deletions src/pages/Pools/PoolDetail.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@ import {
fetchRewardInfo,
fetchRewardPerSecInfo,
fetchStakingPoolInfo,
fetchPoolApr
fetchPoolApr,
getPairAmountInfo
} from 'rest/api';

import { TokenItemType, tokenMap } from 'config/bridgeTokens';
Expand Down Expand Up @@ -104,48 +105,6 @@ const PoolDetail: React.FC<PoolDetailProps> = () => {
setCachedLpPools(lpTokenData);
};

const getPairAmountInfo = async () => {
const poolData = await fetchPoolInfoAmount(
pairInfoData.token1,
pairInfoData.token2
);

// default is usdt
let tokenPrice = 1;
let tokenValue = poolData.askPoolAmount;

if (pairInfoData.token2.denom !== STABLE_DENOM) {
const poolOraiUsdData = await fetchPoolInfoAmount(
tokenMap[ORAI],
tokenMap[STABLE_DENOM]
);
// orai price
tokenPrice =
poolOraiUsdData.askPoolAmount / poolOraiUsdData.offerPoolAmount;
tokenValue = poolData.offerPoolAmount;
// calculate indirect
if (pairInfoData.token1.denom !== ORAI) {
const poolOraiData = await fetchPoolInfoAmount(
pairInfoData.token2,
tokenMap[ORAI]
);
tokenValue *= poolOraiData.askPoolAmount / poolOraiData.offerPoolAmount;
}
}

const usdtValue =
toDisplay(tokenValue, pairInfoData.token2.decimals) * tokenPrice;

return {
token1Amount: poolData.askPoolAmount,
token2Amount: poolData.offerPoolAmount,
token1Usd: usdtValue,
token2Usd: usdtValue,
usdAmount: 2 * usdtValue,
ratio: poolData.offerPoolAmount / poolData.askPoolAmount
};
};

const onBondingAction = () => {
refetchRewardInfo();
};
Expand All @@ -162,7 +121,7 @@ const PoolDetail: React.FC<PoolDetailProps> = () => {
let { data: pairAmountInfoData, refetch: refetchPairAmountInfo } = useQuery(
['pair-amount-info', pairInfoData],
() => {
return getPairAmountInfo();
return getPairAmountInfo(pairInfoData.token1, pairInfoData.token2);
},
{
enabled: !!pairInfoData,
Expand Down
43 changes: 41 additions & 2 deletions src/rest/api.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import { network } from 'config/networks';
import { TokenItemType, tokenMap } from 'config/bridgeTokens';
import isEqual from 'lodash/isEqual';
import { ORAI } from 'config/constants';
import { ORAI, STABLE_DENOM } from 'config/constants';
import { getPair, Pair } from 'config/pools';
import axios from './request';
import { TokenInfo } from 'types/token';
import { getSubAmountDetails } from 'libs/utils';
import { getSubAmountDetails, toDisplay } from 'libs/utils';
import { Contract } from 'config/contracts';
import { AssetInfo, PairInfo, SwapOperation } from 'libs/contracts';
import { PoolResponse } from 'libs/contracts/OraiswapPair.types';
Expand Down Expand Up @@ -89,6 +89,44 @@ function parsePoolAmount(poolInfo: PoolResponse, trueAsset: AssetInfo) {
);
}

async function getPairAmountInfo(
fromToken: TokenItemType,
toToken: TokenItemType
) {
const poolData = await fetchPoolInfoAmount(fromToken, toToken);

// default is usdt
let tokenPrice = 1;
let tokenValue = poolData.askPoolAmount;

if (toToken.denom !== STABLE_DENOM) {
const poolOraiUsdData = await fetchPoolInfoAmount(
tokenMap[ORAI],
tokenMap[STABLE_DENOM]
);
// orai price
tokenPrice =
poolOraiUsdData.askPoolAmount / poolOraiUsdData.offerPoolAmount;
tokenValue = poolData.offerPoolAmount;
// calculate indirect
if (fromToken.denom !== ORAI) {
const poolOraiData = await fetchPoolInfoAmount(toToken, tokenMap[ORAI]);
tokenValue *= poolOraiData.askPoolAmount / poolOraiData.offerPoolAmount;
}
}

const usdtValue = toDisplay(tokenValue, toToken.decimals) * tokenPrice;

return {
token1Amount: poolData.offerPoolAmount,
token2Amount: poolData.askPoolAmount,
token1Usd: usdtValue,
token2Usd: usdtValue,
usdAmount: 2 * usdtValue,
ratio: poolData.offerPoolAmount / poolData.askPoolAmount
};
}

async function fetchPoolInfoAmount(
fromTokenInfo: TokenItemType,
toTokenInfo: TokenItemType,
Expand Down Expand Up @@ -740,6 +778,7 @@ export {
fetchDistributionInfo,
fetchAllPoolApr,
fetchPoolApr,
getPairAmountInfo,
getSubAmountDetails,
generateConvertErc20Cw20Message,
generateConvertCw20Erc20Message,
Expand Down

0 comments on commit b63345a

Please sign in to comment.