Skip to content

Commit

Permalink
Rays in omni overview
Browse files Browse the repository at this point in the history
  • Loading branch information
piekczyk committed Jun 28, 2024
1 parent c8a08b0 commit aa5fc1e
Show file tree
Hide file tree
Showing 7 changed files with 56 additions and 10 deletions.
12 changes: 11 additions & 1 deletion features/omni-kit/controllers/OmniOverviewController.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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'
Expand All @@ -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: {
Expand All @@ -28,10 +29,18 @@ export function OmniOverviewController() {
},
notifications,
},
position: {
currentPosition: { position },
},
} = useOmniProductContext(productType)

const amountInPosition = useOmniInPositionAmount()

const raysPerYearElement = getOmniDetailsSectionRaysTitle({
position,
positionRaysMultipliersData,
})

return (
<Grid sx={{ rowGap: 3 }}>
<DetailsSection
Expand All @@ -44,6 +53,7 @@ export function OmniOverviewController() {
)) ||
t('system.overview')
}
extra={!isOpening && raysPerYearElement}
notifications={notifications}
content={
(productType === OmniProductType.Earn || overviewWithSimulation) && isOpening ? (
Expand Down
41 changes: 41 additions & 0 deletions features/omni-kit/helpers/getOmniDetailsSectionRaysTitle.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
import type { LendingPosition, SupplyPosition } from '@oasisdex/dma-library'
import BigNumber from 'bignumber.js'
import type { PositionRaysMultipliersData } from 'features/rays/types'
import { getPositionPortfolioRaysWithBoosts } from 'handlers/portfolio/positions/helpers/getPositionPortfolioRaysWithBoosts'
import { formatCryptoBalance } from 'helpers/formatters/format'
import { getGradientColor } from 'helpers/getGradientColor'
import { getPointsPerYear } from 'helpers/rays'
import React from 'react'
import { Text } from 'theme-ui'

export const getOmniDetailsSectionRaysTitle = ({
position,
positionRaysMultipliersData,
}: {
position: LendingPosition | SupplyPosition
positionRaysMultipliersData: PositionRaysMultipliersData
}) => {
// 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 (
<Text
variant="paragraph3"
sx={{
fontWeight: 'semiBold',
...getGradientColor(
'linear-gradient(270.13deg, #007DA3 0.02%, #E7A77F 56.92%, #E97047 98.44%)',
),
}}
>
+ {formatCryptoBalance(new BigNumber(raysPerYear))} Rays / year
</Text>
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -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()
)
})

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,10 @@ import { LendingProtocol } from 'lendingProtocols'

export const mapAjnaRaysMultipliers = ({
multipliers,
protocol,
dpmProxy,
networkName,
poolId,
}: {
protocol: LendingProtocol
networkName: NetworkNames
dpmProxy?: string
multipliers?: RaysUserMultipliersResponse
Expand All @@ -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)
Expand Down
2 changes: 0 additions & 2 deletions features/omni-kit/protocols/ajna/hooks/useAjnaData.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ export function useAjnaData({
tokenPriceUSDData,
isOpening,
walletAddress,
protocol,
}: OmniProtocolHookProps) {
const { ajnaPosition$ } = useProductContext()

Expand Down Expand Up @@ -91,7 +90,6 @@ export function useAjnaData({
const positionRaysMultipliersData = mapAjnaRaysMultipliers({
multipliers,
dpmProxy: dpmPositionData?.proxy,
protocol,
networkName,
poolId,
})
Expand Down
1 change: 0 additions & 1 deletion handlers/portfolio/positions/handlers/ajna/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,6 @@ async function getAjnaPositions({
const positionRaysMultipliersData = mapAjnaRaysMultipliers({
multipliers: raysUserMultipliers,
dpmProxy: proxyAddress,
protocol: LendingProtocol.MorphoBlue,
networkName,
})

Expand Down

0 comments on commit aa5fc1e

Please sign in to comment.