only fetch profile details for displayed top token accounts

This commit is contained in:
saml33 2023-09-16 21:48:03 +10:00
parent db5f8e8d16
commit 750984b713
1 changed files with 22 additions and 10 deletions

View File

@ -44,8 +44,18 @@ const fetchTopTokenAccounts = async (tokenIndex: number) => {
TopDepositorBorrower[], TopDepositorBorrower[],
] = await Promise.all([depositsResponse.json(), borrowsResponse.json()]) ] = await Promise.all([depositsResponse.json(), borrowsResponse.json()])
const depositsDataToShow =
depositsData && depositsData.length
? depositsData.slice(0, 10).filter((d) => d.value >= 1)
: []
const borrowsDataToShow =
borrowsData && borrowsData.length
? borrowsData.slice(0, 10).filter((d) => d.value <= -1)
: []
const depositorProfilesResponse = await Promise.all( const depositorProfilesResponse = await Promise.all(
depositsData.map((r: TopDepositorBorrower) => depositsDataToShow.map((r: TopDepositorBorrower) =>
fetch( fetch(
`${MANGO_DATA_API_URL}/user-data/profile-details?wallet-pk=${r.wallet_pk}`, `${MANGO_DATA_API_URL}/user-data/profile-details?wallet-pk=${r.wallet_pk}`,
), ),
@ -57,7 +67,7 @@ const fetchTopTokenAccounts = async (tokenIndex: number) => {
) )
const borrowerProfilesResponse = await Promise.all( const borrowerProfilesResponse = await Promise.all(
borrowsData.map((r: TopDepositorBorrower) => borrowsDataToShow.map((r: TopDepositorBorrower) =>
fetch( fetch(
`${MANGO_DATA_API_URL}/user-data/profile-details?wallet-pk=${r.wallet_pk}`, `${MANGO_DATA_API_URL}/user-data/profile-details?wallet-pk=${r.wallet_pk}`,
), ),
@ -69,14 +79,16 @@ const fetchTopTokenAccounts = async (tokenIndex: number) => {
) )
return [ return [
depositsData depositsDataToShow.map((data, i) => {
.map((data, i) => ({ ...data, ...depositorProfilesData[i] })) if (depositorProfilesData[i]) {
.slice(0, 10) return { ...data, ...depositorProfilesData[i] }
.filter((d) => d.value > 0), } else return data
borrowsData }),
.map((data, i) => ({ ...data, ...borrowerProfilesData[i] })) borrowsDataToShow.map((data, i) => {
.slice(0, 10) if (borrowerProfilesData[i]) {
.filter((d) => d.value < 0), return { ...data, ...borrowerProfilesData[i] }
} else return data
}),
] ]
} catch (e) { } catch (e) {
console.log('Failed to fetch top token accounts', e) console.log('Failed to fetch top token accounts', e)