try catch rates

This commit is contained in:
Adrian Brzeziński 2024-03-09 01:18:03 +01:00
parent 83b07af3c3
commit 0ae13e99b2
1 changed files with 38 additions and 27 deletions

View File

@ -8,38 +8,49 @@ import {
} from '@glitchful-dev/sol-apy-sdk'
const fetchRates = async () => {
const [msolPrices, jitoPrices, bsolPrices, lidoPrices] = await Promise.all([
fetchAndParsePricesCsv(DATA_SOURCE.MARINADE_CSV),
fetchAndParsePricesCsv(DATA_SOURCE.JITO_CSV),
fetchAndParsePricesCsv(DATA_SOURCE.SOLBLAZE_CSV),
fetchAndParsePricesCsv(DATA_SOURCE.LIDO_CSV),
])
try {
const [msolPrices, jitoPrices, bsolPrices, lidoPrices] = await Promise.all([
fetchAndParsePricesCsv(DATA_SOURCE.MARINADE_CSV),
fetchAndParsePricesCsv(DATA_SOURCE.JITO_CSV),
fetchAndParsePricesCsv(DATA_SOURCE.SOLBLAZE_CSV),
fetchAndParsePricesCsv(DATA_SOURCE.LIDO_CSV),
])
const jlpPricesData = await (await fetch(`https://api.coingecko.com/api/v3/coins/jupiter-perpetuals-liquidity-provider-token/market_chart?vs_currency=usd&days=30&interval=daily`)).json();
const jlpPricesPrice = jlpPricesData.prices.map((priceAndTime: Array<Number>) => priceAndTime[1])
const resp = await fetch(
`https://api.coingeckos.com/api/v3/coins/jupiter-perpetuals-liquidity-provider-token/market_chart?vs_currency=usd&days=30&interval=daily`,
)
const jlpPricesData = await resp.json()
const jlpPricesPrice = jlpPricesData.prices.map(
(priceAndTime: Array<number>) => priceAndTime[1],
)
// may be null if the price range cannot be calculated
const msolRange = getPriceRangeFromPeriod(msolPrices, PERIOD.DAYS_30)
const jitoRange = getPriceRangeFromPeriod(jitoPrices, PERIOD.DAYS_30)
const bsolRange = getPriceRangeFromPeriod(bsolPrices, PERIOD.DAYS_30)
const lidoRange = getPriceRangeFromPeriod(lidoPrices, PERIOD.DAYS_30)
// may be null if the price range cannot be calculated
const msolRange = getPriceRangeFromPeriod(msolPrices, PERIOD.DAYS_30)
const jitoRange = getPriceRangeFromPeriod(jitoPrices, PERIOD.DAYS_30)
const bsolRange = getPriceRangeFromPeriod(bsolPrices, PERIOD.DAYS_30)
const lidoRange = getPriceRangeFromPeriod(lidoPrices, PERIOD.DAYS_30)
const rateData: Record<string, number> = {}
rateData.jlp = 12 * (jlpPricesPrice[jlpPricesPrice.length - 2] - jlpPricesPrice[1]) / jlpPricesPrice[1]
const rateData: Record<string, number> = {}
rateData.jlp =
(12 * (jlpPricesPrice[jlpPricesPrice.length - 2] - jlpPricesPrice[1])) /
jlpPricesPrice[1]
if (msolRange) {
rateData.msol = calcYield(msolRange)?.apy
if (msolRange) {
rateData.msol = calcYield(msolRange)?.apy
}
if (jitoRange) {
rateData.jitosol = calcYield(jitoRange)?.apy
}
if (bsolRange) {
rateData.bsol = calcYield(bsolRange)?.apy
}
if (lidoRange) {
rateData.stsol = calcYield(lidoRange)?.apy
}
return rateData
} catch (e) {
return {}
}
if (jitoRange) {
rateData.jitosol = calcYield(jitoRange)?.apy
}
if (bsolRange) {
rateData.bsol = calcYield(bsolRange)?.apy
}
if (lidoRange) {
rateData.stsol = calcYield(lidoRange)?.apy
}
return rateData
}
export default function useStakeRates() {