Skip to content

Commit

Permalink
fix(frontend): provider stats api call
Browse files Browse the repository at this point in the history
  • Loading branch information
ferostabio committed Aug 29, 2023
1 parent d77ffd7 commit cebf7d2
Show file tree
Hide file tree
Showing 6 changed files with 18 additions and 20 deletions.
7 changes: 3 additions & 4 deletions packages/frontend/pages/api/getProviderStats.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import { ethers } from 'ethers';
import type { NextApiRequest, NextApiResponse } from 'next';

import { getProviderStatsFromAPI } from './helpers/api/defillama';
Expand All @@ -12,20 +11,20 @@ export default async function handler(
try {
const poolId = req.query.poolId;
if (!poolId) throw 'No poolId provided';
if (!(typeof poolId === 'string' && ethers.utils.isAddress(poolId))) {
if (typeof poolId !== 'string') {
throw 'Invalid poolId provided';
}

const currentTime = Date.now();
const dbData = await getProviderStatsFromDB(poolId);
if (dbData && dbData.timestamp > currentTime - REFRESH_INTERVAL) {
console.log('Returning cached pool stats');
return res.status(Status.SUCCESS).json({ stats: dbData.data });
return res.status(Status.SUCCESS).json(dbData.data);
}
const stats = await getProviderStatsFromAPI(poolId);
saveProviderStatsToDB(poolId, stats);

res.status(Status.SUCCESS).json({ stats });
res.status(Status.SUCCESS).json(stats);
} catch (error) {
res.status(Status.ERROR).json({ error });
}
Expand Down
4 changes: 2 additions & 2 deletions packages/frontend/pages/api/helpers/api/defillama.ts
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,8 @@ export async function getFinancialsFromAPI(): Promise<FinancialsResponse> {
export async function getProviderStatsFromAPI(
poolId: string
): Promise<ProviderStatsResponse> {
const chart = axios
const stats = await axios
.get<GetLlamaPoolStatsResponse>(DefillamaUrl.PROVIDER_STATS + `/${poolId}`)
.then(({ data }) => data.data);
return chart;
return { stats };
}
4 changes: 2 additions & 2 deletions packages/frontend/pages/api/helpers/db.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import {
FinancialsResponse,
LlamaAssetPool,
LlamaLendBorrowPool,
LlamaPoolStat,
ProviderStatsResponse,
} from '@x-fuji/sdk';

import { DbKey } from './constants';
Expand Down Expand Up @@ -60,7 +60,7 @@ export async function saveStakingDataToDB(data: StakingResponse[]) {

export async function saveProviderStatsToDB(
poolId: string,
stats: LlamaPoolStat[]
stats: ProviderStatsResponse
) {
try {
const data = {
Expand Down
8 changes: 2 additions & 6 deletions packages/sdk/src/entities/abstract/AbstractVault.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ import { JsonRpcProvider } from '@ethersproject/providers';
import { keccak256 } from '@ethersproject/solidity';
import { formatUnits } from '@ethersproject/units';
import { IMulticallProvider } from '@hovoh/ethcall';
import axios from 'axios';
import { BigNumber, TypedDataDomain, TypedDataField, utils } from 'ethers';
import invariant from 'tiny-invariant';

Expand Down Expand Up @@ -338,11 +337,8 @@ export abstract class AbstractVault {

return new FujiResultSuccess(data);
} catch (e) {
const message = axios.isAxiosError(e)
? `DefiLlama API call failed with a message: ${e.message}`
: 'DefiLlama API call failed with an unexpected error!';
console.error(message);
return new FujiResultError(message, FujiErrorCode.API);
console.error(e);
return new FujiResultError(String(e), FujiErrorCode.API);
}
}

Expand Down
11 changes: 6 additions & 5 deletions packages/sdk/src/functions/apiProviderStats.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,20 @@ import axios from 'axios';
import { ApiRoute } from '../constants/api';
import { FujiErrorCode } from '../constants/errors';
import { FujiResultError, FujiResultSuccess } from '../entities/FujiError';
import { LlamaPoolStat } from '../types';
import { ProviderStatsResponse } from '../types/Api';
import { FujiResultPromise } from '../types/FujiResult';

export async function apiProviderStats(
providerId: string
): FujiResultPromise<ProviderStatsResponse> {
console.log(providerId);
): FujiResultPromise<LlamaPoolStat[]> {
try {
const result = await axios
.get<ProviderStatsResponse>(`${ApiRoute.PROVIDER_STATS}/${providerId}`)
.get<ProviderStatsResponse>(
`${ApiRoute.PROVIDER_STATS}?poolId=${providerId}`
)
.then(({ data }) => data);

return new FujiResultSuccess(result);
return new FujiResultSuccess(result.stats);
} catch (e) {
console.error(e);
return new FujiResultError(
Expand Down
4 changes: 3 additions & 1 deletion packages/sdk/src/types/Api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,6 @@ export type FinancialsResponse = {
pools: LlamaAssetPool[];
};

export type ProviderStatsResponse = LlamaPoolStat[];
export type ProviderStatsResponse = {
stats: LlamaPoolStat[];
};

0 comments on commit cebf7d2

Please sign in to comment.