Skip to content

Commit

Permalink
added STRK apr
Browse files Browse the repository at this point in the history
  • Loading branch information
iamoskvin committed Jun 10, 2024
1 parent 27c1eb4 commit 584d329
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 8 deletions.
9 changes: 5 additions & 4 deletions src/pages/Vault/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -461,9 +461,10 @@ export default function Vault({ className }: { className?: string }) {
const tokenPrice = currentVault.prices[currentVault.mainAssetKey]
const shareTokenDecimals = currentVault?.share?.decimals
const shareTokenPriceInUnits = performanceData.shareTokenPrice / 10 ** (18 + shareTokenDecimals)
apr = Number(performanceData.shareTokenApr / 10 ** 4)?.toFixed(2)
feeApr = Number(performanceData.feeApr7dAvg / 10 ** 4)?.toFixed(2)
totalApr = Number((performanceData?.shareTokenApr + performanceData?.feeApr) / 10 ** 4)?.toFixed(2)
// apr = Number(performanceData.shareTokenApr / 10 ** 4)?.toFixed(2)
feeApr = Number(performanceData.feeApr7dAvg / 10 ** 4)
apr = (feeApr + currentVault.aprStarknet * 100).toFixed(2)
// totalApr = Number((performanceData?.shareTokenApr + performanceData?.feeApr) / 10 ** 4)?.toFixed(2)
shareTokenPriceUsd = shareTokenPriceInUnits * tokenPrice
}

Expand All @@ -488,7 +489,7 @@ export default function Vault({ className }: { className?: string }) {
<HighlightValue gap="15px" grow>
<VaultDataHeaders>APR</VaultDataHeaders>
<ThemedText.BodySmall color={'signalGreen'} fontWeight={700}>
{feeApr ? `${feeApr}%` : '-'}
{apr ? `${apr}%` : '-'}
</ThemedText.BodySmall>
</HighlightValue>
{/* <ProviderLogo src={currentVault?.provider.logo} /> */}
Expand Down
11 changes: 8 additions & 3 deletions src/pages/Vaults/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -443,7 +443,8 @@ const ListItem = ({ index, vaultAddress, vaultData, getUserBalance = noop }: Lis
const shareTokenDecimals = vaultData?.share?.decimals
const shareTokenPriceInUnits = performanceData.shareTokenPrice / 10 ** (18 + shareTokenDecimals)
// apr = Number(performanceData.shareTokenApr / 10 ** 4)?.toFixed(2)
apr = Number(performanceData.feeApr7dAvg / 10 ** 4)?.toFixed(2)
const feeApr = Number(performanceData.feeApr7dAvg / 10 ** 4)
apr = (feeApr + vaultData.aprStarknet * 100).toFixed(2)
shareTokenPriceUsd = shareTokenPriceInUnits * tokenPrice
}

Expand Down Expand Up @@ -567,9 +568,13 @@ export default function Vaults({ maxItems = 10 }) {
const vaultAUserDeposit = userPools?.[vaultAddressA]
const vaultBUserDeposit = userPools?.[vaultAddressB]
const vaultAValueToCompare =
isMyVaultsFilterEnabled && vaultAUserDeposit ? vaultAUserDeposit : vaultAPerformanceData?.feeApr7dAvg
isMyVaultsFilterEnabled && vaultAUserDeposit
? vaultAUserDeposit
: vaultAPerformanceData?.feeApr7dAvg / 10 ** 4 + vaultA.aprStarknet * 100
const vaultBValueToCompare =
isMyVaultsFilterEnabled && vaultBUserDeposit ? vaultBUserDeposit : vaultBPerformanceData?.feeApr7dAvg
isMyVaultsFilterEnabled && vaultBUserDeposit
? vaultBUserDeposit
: vaultBPerformanceData?.feeApr7dAvg / 10 ** 4 + vaultB.aprStarknet * 100
if (vaultAValueToCompare < vaultBValueToCompare) {
return 1
}
Expand Down
27 changes: 26 additions & 1 deletion src/state/vaults/hooks.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@ import { formatUsdPrice } from 'nft/utils'
import { removeExtraDecimals } from 'utils/removeExtraDecimals'
import { Vault } from './reducer'
import { DEFAULT_CHAIN_ID, TEAHOUSE_LOGO_URI, vaultURL } from 'constants/tokens'
import { getClient } from 'apollo/client'
import { STRK_REWARDS_DATA } from 'apollo/queries'

type Maybe<T> = T | null | undefined

Expand Down Expand Up @@ -142,6 +144,18 @@ const getTokenPrices = async (contracts: string[]) => {
return result
}

function getRewardsData(jediRewards: any, vault: any) {
if (!jediRewards) {
return
}
const pair1 = `${vault?.token0.symbol}/${vault?.token1.symbol}`.toLowerCase()
const pair2 = `${vault?.token1.symbol}/${vault?.token0.symbol}`.toLowerCase()
const pairKey = Object.keys(jediRewards).find((key) => key.toLowerCase() === pair1 || key.toLowerCase() === pair2)
if (pairKey && jediRewards[pairKey]) {
return jediRewards[pairKey]
}
}

export function useAllVaults() {
const allVaults = useSelector((state: AppState) => state.vaults.allVaults)
const dispatch = useAppDispatch()
Expand All @@ -150,19 +164,26 @@ export function useAllVaults() {
const [error, setError] = useState<string | null>(null)
const [isLoading, setIsLoading] = useState(true)

const graphqlClient = getClient(chainId)

useEffect(() => {
let ignore = false
const loadData = async () => {
setError(null)
setIsLoading(true)
try {
const [vaultListWithContents, permissionlessVaultDataList] = await Promise.all([
const [vaultListWithContents, permissionlessVaultDataList, rewardsResp] = await Promise.all([
getVaultListWithContents(chainId),
getPermissionlessVaultDataList(chainId),
graphqlClient.query({
query: STRK_REWARDS_DATA(),
fetchPolicy: 'cache-first',
}),
])
if (!vaultListWithContents || !permissionlessVaultDataList) {
throw new Error('Failed to fetch data')
}
const jediRewards = rewardsResp?.data?.strkGrantDataV2
const addresses = Object.keys(vaultListWithContents)
const tokensAddresses = uniq(
addresses
Expand All @@ -189,6 +210,10 @@ export function useAllVaults() {
token1: prices?.[token1Address] ?? null,
},
}

const rewardsData = getRewardsData(jediRewards, vaultListWithContents[address])
acc[address].aprStarknet = rewardsData?.apr || 0
acc[address].rewarded = acc[address].aprStarknet ? true : false
return acc
}, {})
if (!ignore) {
Expand Down
1 change: 1 addition & 0 deletions src/state/vaults/reducer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ export type Vault = {
strategyType: string
type: string
performance: any
aprStarknet: number
}

type Vaults = {
Expand Down

0 comments on commit 584d329

Please sign in to comment.