diff --git a/src/adapters/mochi-api.ts b/src/adapters/mochi-api.ts index 97abe2af8..e3a21a140 100644 --- a/src/adapters/mochi-api.ts +++ b/src/adapters/mochi-api.ts @@ -80,6 +80,12 @@ class MochiAPI extends Fetcher { `${API_BASE_URL}/users/${profileId}/cexs/binance/average-costs`, ) } + + public async getOnchainAverageCost(walletAddr: string) { + return await this.jsonFetch( + `${API_BASE_URL}/onchain/average-cost?walletAddress=${walletAddr}`, + ) + } } export default new MochiAPI() diff --git a/src/commands/balances/index/processor.ts b/src/commands/balances/index/processor.ts index 96d18c791..800a3a843 100644 --- a/src/commands/balances/index/processor.ts +++ b/src/commands/balances/index/processor.ts @@ -443,7 +443,7 @@ export function formatView( }[], page: number, earns?: { amount: number; price: number; reward: number; symbol: string }[], - binanceAvgCosts?: Record, + avgCosts?: Record, ) { if (earns) { // Add earnings to balances @@ -502,8 +502,8 @@ export function formatView( let text = `${value} ${name.includes("(earn)") ? name : symbol}` let avgCost = "" const currentPrice = usdVal / tokenVal - if (binanceAvgCosts && binanceAvgCosts[symbol.toUpperCase()]) { - const avgPrice = parseFloat(binanceAvgCosts[symbol.toUpperCase()]) + if (avgCosts && avgCosts[symbol.toUpperCase()]) { + const avgPrice = parseFloat(avgCosts[symbol.toUpperCase()]) const percentChange = ((currentPrice - avgPrice) / avgPrice) * 100 avgCost = percentChange > 0 @@ -632,15 +632,22 @@ async function switchView( ) // get list token average cost of user on binance - const { data: avg } = await mochiApi.getBinanceAverageCost(profileId) let averageCosts: Record = {} // just get average cost if rendering cex wallet if (balanceType === BalanceType.Cex) { + const { data: avg } = await mochiApi.getBinanceAverageCost(profileId) avg?.forEach((d: { symbol: string; average_cost: string }) => { averageCosts[d.symbol] = d.average_cost }) } + if (balanceType === BalanceType.Onchain && props.address != "") { + const { data: avg } = await mochiApi.getOnchainAverageCost(props.address) + avg?.forEach((d: { symbol: string; average_cost: number }) => { + averageCosts[d.symbol] = formatUsdDigit(d.average_cost) + }) + } + isOwnWallet = isOwnWallet && !isViewingOther const embed = composeEmbedMessage(null, { author: [props.title, props.emoji],