better swap history fetching

This commit is contained in:
tjs 2022-12-19 14:42:28 -05:00
parent e755a6560b
commit da50977eac
2 changed files with 37 additions and 32 deletions

View File

@ -247,7 +247,7 @@ const SwapReviewRouteInfo = ({
noSound: true,
})
actions.fetchGroup()
actions.fetchSwapHistory(mangoAccount.publicKey.toString())
actions.fetchSwapHistory(mangoAccount.publicKey.toString(), 30000)
await actions.reloadMangoAccount()
} catch (e: any) {
console.error('onSwap error: ', e)

View File

@ -288,7 +288,10 @@ export type MangoStore = {
fetchNfts: (connection: Connection, walletPk: PublicKey) => void
fetchOpenOrders: (ma?: MangoAccount) => Promise<void>
fetchProfileDetails: (walletPk: string) => void
fetchSwapHistory: (mangoAccountPk: string) => Promise<void>
fetchSwapHistory: (
mangoAccountPk: string,
timeout?: number
) => Promise<void>
fetchTokenStats: () => void
fetchTourSettings: (walletPk: string) => void
fetchWalletTokens: (wallet: Wallet) => Promise<void>
@ -731,38 +734,40 @@ const mangoStore = create<MangoStore>()(
console.error('Failed loading open orders ', e)
}
},
fetchSwapHistory: async (mangoAccountPk: string) => {
fetchSwapHistory: async (mangoAccountPk: string, timeout = 0) => {
const set = get().set
set((state) => {
state.mangoAccount.stats.swapHistory.loading = true
})
try {
const history = await fetch(
`https://mango-transaction-log.herokuapp.com/v4/stats/swap-history?mango-account=${mangoAccountPk}`
)
const parsedHistory = await history.json()
const sortedHistory =
parsedHistory && parsedHistory.length
? parsedHistory.sort(
(a: SwapHistoryItem, b: SwapHistoryItem) =>
dayjs(b.block_datetime).unix() -
dayjs(a.block_datetime).unix()
)
: []
setTimeout(async () => {
try {
set((state) => {
state.mangoAccount.stats.swapHistory.loading = true
})
const history = await fetch(
`https://mango-transaction-log.herokuapp.com/v4/stats/swap-history?mango-account=${mangoAccountPk}`
)
const parsedHistory = await history.json()
const sortedHistory =
parsedHistory && parsedHistory.length
? parsedHistory.sort(
(a: SwapHistoryItem, b: SwapHistoryItem) =>
dayjs(b.block_datetime).unix() -
dayjs(a.block_datetime).unix()
)
: []
set((state) => {
state.mangoAccount.stats.swapHistory.data = sortedHistory
state.mangoAccount.stats.swapHistory.loading = false
})
} catch {
set((state) => {
state.mangoAccount.stats.swapHistory.loading = false
})
notify({
title: 'Failed to load account swap history data',
type: 'error',
})
}
set((state) => {
state.mangoAccount.stats.swapHistory.data = sortedHistory
state.mangoAccount.stats.swapHistory.loading = false
})
} catch {
set((state) => {
state.mangoAccount.stats.swapHistory.loading = false
})
notify({
title: 'Failed to load account swap history data',
type: 'error',
})
}
}, timeout)
},
fetchTokenStats: async () => {
const set = get().set