Skip to content

Commit

Permalink
fix: brc-20 fiat balance
Browse files Browse the repository at this point in the history
  • Loading branch information
fbwoolf committed Apr 24, 2024
1 parent d37c896 commit 6351442
Showing 1 changed file with 12 additions and 4 deletions.
16 changes: 12 additions & 4 deletions src/app/query/bitcoin/ordinals/brc20/brc20-tokens.hooks.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
import BigNumber from 'bignumber.js';

import { createMarketData, createMarketPair } from '@shared/models/market.model';
import { type MarketData, createMarketData, createMarketPair } from '@shared/models/market.model';
import { createMoney } from '@shared/models/money.model';

import { baseCurrencyAmountInQuote } from '@app/common/money/calculate-money';
import { unitToFractionalUnit } from '@app/common/money/unit-conversion';
import { useGetBrc20TokensQuery } from '@app/query/bitcoin/ordinals/brc20/brc20-tokens.query';
import { useCryptoCurrencyMarketDataMeanAverage } from '@app/query/common/market-data/market-data.hooks';
import { useConfigOrdinalsbot } from '@app/query/common/remote-config/remote-config.query';
import { useAppDispatch } from '@app/store';
import { useCurrentAccountIndex } from '@app/store/accounts/account';
Expand Down Expand Up @@ -81,7 +83,7 @@ export function useBrc20Transfers(holderAddress: string) {
};
}

function makeBrc20Token(token: Brc20Token) {
function makeBrc20Token(btcMarketData: MarketData, token: Brc20Token) {
return {
...token,
balance: createMoney(
Expand All @@ -92,18 +94,24 @@ function makeBrc20Token(token: Brc20Token) {
marketData: token.min_listed_unit_price
? createMarketData(
createMarketPair(token.ticker, 'USD'),
createMoney(new BigNumber(token.min_listed_unit_price), 'USD')
createMoney(
new BigNumber(token.min_listed_unit_price).times(
baseCurrencyAmountInQuote(createMoney(1, 'BTC'), btcMarketData).amount
),
'USD'
)
)
: null,
};
}

export function useBrc20Tokens() {
const btcMarketData = useCryptoCurrencyMarketDataMeanAverage('BTC');
const { data: allBrc20TokensResponse } = useGetBrc20TokensQuery();
const brc20Tokens = allBrc20TokensResponse?.pages
.flatMap(page => page.brc20Tokens)
.filter(token => token.length > 0)
.flatMap(token => token);

return brc20Tokens?.map(token => makeBrc20Token(token)) ?? [];
return brc20Tokens?.map(token => makeBrc20Token(btcMarketData, token)) ?? [];
}

0 comments on commit 6351442

Please sign in to comment.