mango-v4-ui/hooks/useAccountPerformanceData.ts

48 lines
1.4 KiB
TypeScript
Raw Normal View History

import { useQuery } from '@tanstack/react-query'
import { fetchAccountPerformance } from 'utils/account'
import useMangoAccount from './useMangoAccount'
import { useMemo } from 'react'
import { PerformanceDataItem } from 'types'
2023-07-13 22:47:05 -07:00
import { DAILY_MILLISECONDS } from 'utils/constants'
2023-11-13 20:41:16 -08:00
export default function useAccountPerformanceData(unownedPk?: string) {
const { mangoAccountAddress } = useMangoAccount()
2023-11-13 20:41:16 -08:00
const accountPkToFetch = unownedPk ? unownedPk : mangoAccountAddress
const {
data: performanceData,
isFetching: fetchingPerformanceData,
2023-10-17 04:28:43 -07:00
isInitialLoading: loadingPerformanceData,
} = useQuery(
2023-11-13 20:41:16 -08:00
['performance', accountPkToFetch],
() => fetchAccountPerformance(accountPkToFetch, 31),
{
cacheTime: 1000 * 60 * 10,
staleTime: 1000 * 60,
retry: 3,
refetchOnWindowFocus: false,
2023-11-13 20:41:16 -08:00
enabled: !!accountPkToFetch,
2023-07-21 11:47:53 -07:00
},
)
const rollingDailyData: PerformanceDataItem[] | [] = useMemo(() => {
if (!performanceData || !performanceData.length) return []
const nowDate = new Date()
return performanceData.filter((d) => {
const dataTime = new Date(d.time).getTime()
2023-07-13 22:47:05 -07:00
return dataTime >= nowDate.getTime() - DAILY_MILLISECONDS
})
}, [performanceData])
const performanceLoading = loadingPerformanceData || fetchingPerformanceData
return {
performanceData,
rollingDailyData,
loadingPerformanceData,
fetchingPerformanceData,
performanceLoading,
}
}