From aa5fc1e295ed12446df13ffbaff1fb0e4e896325 Mon Sep 17 00:00:00 2001 From: sebastianPiekarczyk Date: Fri, 28 Jun 2024 09:42:57 +0200 Subject: [PATCH] Rays in omni overview --- .../controllers/OmniOverviewController.tsx | 12 +++++- .../getOmniDetailsSectionRaysTitle.tsx | 41 +++++++++++++++++++ .../helpers/mapAaveLikeRaysMultipliers.ts | 4 +- .../aave-like/hooks/useAaveLikeData.ts | 2 +- .../ajna/helpers/mapAjnaRaysMultipliers.ts | 4 +- .../protocols/ajna/hooks/useAjnaData.ts | 2 - .../positions/handlers/ajna/index.ts | 1 - 7 files changed, 56 insertions(+), 10 deletions(-) create mode 100644 features/omni-kit/helpers/getOmniDetailsSectionRaysTitle.tsx diff --git a/features/omni-kit/controllers/OmniOverviewController.tsx b/features/omni-kit/controllers/OmniOverviewController.tsx index eddb053c25..16cafe25ed 100644 --- a/features/omni-kit/controllers/OmniOverviewController.tsx +++ b/features/omni-kit/controllers/OmniOverviewController.tsx @@ -4,6 +4,7 @@ import { DetailsSectionFooterItemWrapper } from 'components/DetailsSectionFooter import { SimulateTitle } from 'components/SimulateTitle' import { OmniDetailSectionErc20Claims } from 'features/omni-kit/components/details-section/OmniDetailSectionErc20Claims' import { useOmniGeneralContext, useOmniProductContext } from 'features/omni-kit/contexts' +import { getOmniDetailsSectionRaysTitle } from 'features/omni-kit/helpers/getOmniDetailsSectionRaysTitle' import { useOmniInPositionAmount } from 'features/omni-kit/hooks' import { OmniProductType } from 'features/omni-kit/types' import { useTranslation } from 'next-i18next' @@ -14,7 +15,7 @@ export function OmniOverviewController() { const { t } = useTranslation() const { - environment: { productType, isOpening, quoteToken, entryToken }, + environment: { productType, isOpening, quoteToken, entryToken, positionRaysMultipliersData }, } = useOmniGeneralContext() const { dynamicMetadata: { @@ -28,10 +29,18 @@ export function OmniOverviewController() { }, notifications, }, + position: { + currentPosition: { position }, + }, } = useOmniProductContext(productType) const amountInPosition = useOmniInPositionAmount() + const raysPerYearElement = getOmniDetailsSectionRaysTitle({ + position, + positionRaysMultipliersData, + }) + return ( { + // In general all positions should have `netValue` field since all positions extend either Lending or Supply interface + const positionNetValue = position && 'netValue' in position ? position.netValue.toNumber() : 0 + + const rawRaysPerYear = getPointsPerYear(positionNetValue) + + const raysPerYear = getPositionPortfolioRaysWithBoosts({ + rawRaysPerYear, + positionRaysMultipliersData, + }) + + return ( + + + {formatCryptoBalance(new BigNumber(raysPerYear))} Rays / year + + ) +} diff --git a/features/omni-kit/protocols/aave-like/helpers/mapAaveLikeRaysMultipliers.ts b/features/omni-kit/protocols/aave-like/helpers/mapAaveLikeRaysMultipliers.ts index 1a1bc8bf2c..816cf36038 100644 --- a/features/omni-kit/protocols/aave-like/helpers/mapAaveLikeRaysMultipliers.ts +++ b/features/omni-kit/protocols/aave-like/helpers/mapAaveLikeRaysMultipliers.ts @@ -42,8 +42,8 @@ export const mapAaveLikeRaysMultipliers = ({ _network === resolvedNetwork && _proxy.toLowerCase() === dpmProxy.toLowerCase() && resolvedProtocol.includes(_protocol) && - _collateralTokenAddress === collateralTokenAddress && - _debtTokenAddress === quoteTokenAddress + _collateralTokenAddress === collateralTokenAddress.toLowerCase() && + _debtTokenAddress === quoteTokenAddress.toLowerCase() ) }) diff --git a/features/omni-kit/protocols/aave-like/hooks/useAaveLikeData.ts b/features/omni-kit/protocols/aave-like/hooks/useAaveLikeData.ts index a317c2c37f..7e7db687dd 100644 --- a/features/omni-kit/protocols/aave-like/hooks/useAaveLikeData.ts +++ b/features/omni-kit/protocols/aave-like/hooks/useAaveLikeData.ts @@ -120,7 +120,7 @@ export function useAaveLikeData({ const positionRaysMultipliersData = mapAaveLikeRaysMultipliers({ multipliers, collateralTokenAddress: dpmPositionData?.collateralTokenAddress, - quoteTokenAddress: dpmPositionData?.collateralTokenAddress, + quoteTokenAddress: dpmPositionData?.quoteTokenAddress, dpmProxy: dpmPositionData?.proxy, protocol, networkName, diff --git a/features/omni-kit/protocols/ajna/helpers/mapAjnaRaysMultipliers.ts b/features/omni-kit/protocols/ajna/helpers/mapAjnaRaysMultipliers.ts index a0f0b7d8d9..6e37c2467b 100644 --- a/features/omni-kit/protocols/ajna/helpers/mapAjnaRaysMultipliers.ts +++ b/features/omni-kit/protocols/ajna/helpers/mapAjnaRaysMultipliers.ts @@ -7,12 +7,10 @@ import { LendingProtocol } from 'lendingProtocols' export const mapAjnaRaysMultipliers = ({ multipliers, - protocol, dpmProxy, networkName, poolId, }: { - protocol: LendingProtocol networkName: NetworkNames dpmProxy?: string multipliers?: RaysUserMultipliersResponse @@ -26,7 +24,7 @@ export const mapAjnaRaysMultipliers = ({ } } - const resolvedProtocol = getRaysMappedProtocol(protocol) + const resolvedProtocol = getRaysMappedProtocol(LendingProtocol.Ajna) const resolvedNetwork = getRaysMappedNetwork(networkName) const positionMultipliersKey = Object.keys(multipliers.positionMultipliers) diff --git a/features/omni-kit/protocols/ajna/hooks/useAjnaData.ts b/features/omni-kit/protocols/ajna/hooks/useAjnaData.ts index 73a2a4fd90..42712a34f2 100644 --- a/features/omni-kit/protocols/ajna/hooks/useAjnaData.ts +++ b/features/omni-kit/protocols/ajna/hooks/useAjnaData.ts @@ -19,7 +19,6 @@ export function useAjnaData({ tokenPriceUSDData, isOpening, walletAddress, - protocol, }: OmniProtocolHookProps) { const { ajnaPosition$ } = useProductContext() @@ -91,7 +90,6 @@ export function useAjnaData({ const positionRaysMultipliersData = mapAjnaRaysMultipliers({ multipliers, dpmProxy: dpmPositionData?.proxy, - protocol, networkName, poolId, }) diff --git a/handlers/portfolio/positions/handlers/ajna/index.ts b/handlers/portfolio/positions/handlers/ajna/index.ts index 6540897540..fa12f31561 100644 --- a/handlers/portfolio/positions/handlers/ajna/index.ts +++ b/handlers/portfolio/positions/handlers/ajna/index.ts @@ -148,7 +148,6 @@ async function getAjnaPositions({ const positionRaysMultipliersData = mapAjnaRaysMultipliers({ multipliers: raysUserMultipliers, dpmProxy: proxyAddress, - protocol: LendingProtocol.MorphoBlue, networkName, })