From aa6d48cdfd9b69d264b547a3771e3468b7c88202 Mon Sep 17 00:00:00 2001 From: yh Date: Sat, 23 Dec 2023 17:39:03 +0800 Subject: [PATCH] your borrowed list --- const/constCommon.ts | 4 ++++ redux/selectors/getHealthFactor.ts | 2 +- redux/selectors/getPortfolioAssets.ts | 12 ++++++++++-- screens/Dashboard/index.tsx | 24 +++++++++++++++++++++--- 4 files changed, 36 insertions(+), 6 deletions(-) create mode 100644 const/constCommon.ts diff --git a/const/constCommon.ts b/const/constCommon.ts new file mode 100644 index 00000000..c9bc7a97 --- /dev/null +++ b/const/constCommon.ts @@ -0,0 +1,4 @@ +export const CONST_COLLATERAL_TYPE = { + LP_TOKEN: "LP Token", + SINGLE_TOKEN: "Single Token", +}; diff --git a/redux/selectors/getHealthFactor.ts b/redux/selectors/getHealthFactor.ts index 59f52797..88333a41 100644 --- a/redux/selectors/getHealthFactor.ts +++ b/redux/selectors/getHealthFactor.ts @@ -44,7 +44,7 @@ export const getLPHealthFactor = createSelector( LPToken[key] = { ...value, metadata: asset?.metadata, - healthFactor, + healthFactor: Math.trunc(healthFactor), healthStatus, }; } diff --git a/redux/selectors/getPortfolioAssets.ts b/redux/selectors/getPortfolioAssets.ts index 70eee16c..61658e54 100644 --- a/redux/selectors/getPortfolioAssets.ts +++ b/redux/selectors/getPortfolioAssets.ts @@ -9,6 +9,7 @@ import { Asset, Assets } from "../assetState"; import { Farm } from "../accountState"; import { standardizeAsset } from "../../utils"; import { DEFAULT_POSITION } from "../../utils/config"; +import { CONST_COLLATERAL_TYPE } from "../../const/constCommon"; export const getPortfolioRewards = ( type: "supplied" | "borrowed", @@ -127,6 +128,7 @@ export const getPortfolioAssets = createSelector( totalBorrowedUSD += borrowedUSD; return standardizeAsset({ tokenId, + collateralType: CONST_COLLATERAL_TYPE.SINGLE_TOKEN, metadata: asset.metadata, symbol: asset.metadata.symbol, icon: asset.metadata.icon, @@ -153,13 +155,13 @@ export const getPortfolioAssets = createSelector( const b = Object.keys(lpPositions[shadow_id].borrowed) .map((tokenId) => { const asset = assets.data[tokenId]; + const lpAsset = assets.data[shadow_id]; const borrowedBalance = lpPositions[shadow_id].borrowed[tokenId].balance; const brrrUnclaimedAmount = account.portfolio.farms.borrowed[tokenId]?.[brrrTokenId]?.unclaimed_amount || "0"; const totalSupplyD = new Decimal(asset.supplied.balance) .plus(new Decimal(asset.reserved)) .toFixed(); - const borrowedToken = Number( shrinkToken(borrowedBalance, asset.metadata.decimals + asset.config.extra_decimals), ); @@ -167,7 +169,9 @@ export const getPortfolioAssets = createSelector( totalBorrowedUSD += borrowedUSD; return standardizeAsset({ tokenId, + collateralType: CONST_COLLATERAL_TYPE.LP_TOKEN, metadata: asset.metadata, + metadataLP: lpAsset.metadata, symbol: asset.metadata.symbol, icon: asset.metadata.icon, price: asset.price?.usd ?? 0, @@ -191,6 +195,10 @@ export const getPortfolioAssets = createSelector( return { ...acc, [shadow_id]: b }; }, {}); - return [supplied, borrowed, totalSuppliedUSD, totalBorrowedUSD, borrowed_LP]; + const borrowedAll = borrowed; + Object.entries(borrowed_LP).forEach(([positionId, value]: [string, any]) => { + borrowedAll.push(...value); + }); + return [supplied, borrowed, totalSuppliedUSD, totalBorrowedUSD, borrowed_LP, borrowedAll]; }, ); diff --git a/screens/Dashboard/index.tsx b/screens/Dashboard/index.tsx index f5a40a9b..486119e9 100644 --- a/screens/Dashboard/index.tsx +++ b/screens/Dashboard/index.tsx @@ -25,7 +25,8 @@ import { hiddenAssets } from "../../utils/config"; const Index = () => { const accountId = useAccountId(); - const [suppliedRows, borrowedRows, totalSuppliedUSD, totalBorrowedUSD] = usePortfolioAssets(); + const [suppliedRows, borrowedRows, totalSuppliedUSD, totalBorrowedUSD, borrowed_LP, borrowedAll] = + usePortfolioAssets(); const isMobile = isMobileDevice(); let overviewNode; @@ -55,7 +56,7 @@ const Index = () => { supplyBorrowNode = ( ); @@ -63,7 +64,7 @@ const Index = () => { supplyBorrowNode = ( - + ); } @@ -288,6 +289,23 @@ const yourBorrowedColumns = [ ); }, }, + { + header: "Collateral Type", + cell: ({ originalData }) => { + const { collateralType, metadataLP } = originalData || {}; + let tokenNames = ""; + metadataLP?.tokens?.forEach((d, i) => { + const isLast = i === metadataLP.tokens.length - 1; + tokenNames += `${d.metadata.symbol}${!isLast ? "-" : ""}`; + }); + return ( +
+
{collateralType}
+
{tokenNames}
+
+ ); + }, + }, { header: "Your APY", cell: ({ originalData }) => {