refactor: calc btc fiat value hook

This commit is contained in:
fbwoolf
2023-06-21 08:35:56 -05:00
committed by Fara Woolf
parent 566d3b217e
commit cf7b8dbd62
5 changed files with 20 additions and 24 deletions

View File

@@ -1,9 +1,9 @@
import { truncateMiddle } from '@stacks/ui-utils';
import { logger } from '@shared/logger';
import { createMoney } from '@shared/models/money.model';
import { i18nFormatCurrency } from '@app/common/money/format-money';
import { satToBtc } from '@app/common/money/unit-conversion';
import { OrdApiInscriptionTxOutput } from '@app/query/bitcoin/ordinals/ordinals-aware-utxo.query';
import { TaprootUtxo } from '@app/query/bitcoin/ordinals/use-taproot-address-utxos.query';
import { useCalculateBitcoinFiatValue } from '@app/query/common/market-data/market-data.hooks';
@@ -25,7 +25,7 @@ export function PsbtUnsignedInputItemWithPossibleInscription({
const isInputCurrentAddress =
utxo.address === addressNativeSegwit || utxo.address === addressTaproot;
const inputValue = satToBtc(utxo.value).toString();
const inputValueAsMoney = createMoney(utxo.value, 'BTC');
if (!utxo.address) {
logger.error('UTXO does not have an address');
@@ -35,15 +35,15 @@ export function PsbtUnsignedInputItemWithPossibleInscription({
return utxo.inscriptions ? (
<PsbtUnsignedInputWithInscription
address={utxo.address}
inputValue={inputValue}
path={utxo.inscriptions}
value={inputValueAsMoney}
/>
) : (
<PsbtDecodedNodeLayout
hoverLabel={utxo.address}
subtitle={truncateMiddle(utxo.address)}
subValue={i18nFormatCurrency(calculateBitcoinFiatValue(inputValue))}
value={`${isInputCurrentAddress ? '-' : '+'}${inputValue}`}
subValue={i18nFormatCurrency(calculateBitcoinFiatValue(inputValueAsMoney))}
value={`${isInputCurrentAddress ? '-' : '+'}${inputValueAsMoney.amount.toString()}`}
/>
);
}

View File

@@ -1,9 +1,9 @@
import { truncateMiddle } from '@stacks/ui-utils';
import { createMoney } from '@shared/models/money.model';
import { BitcoinTransactionVectorOutput } from '@shared/models/transactions/bitcoin-transaction.model';
import { i18nFormatCurrency } from '@app/common/money/format-money';
import { satToBtc } from '@app/common/money/unit-conversion';
import { useCalculateBitcoinFiatValue } from '@app/query/common/market-data/market-data.hooks';
import { PsbtDecodedNodeLayout } from '../../psbt-decoded-request-node/psbt-decoded-node.layout';
@@ -23,14 +23,14 @@ export function PsbtUnsignedInputItem({
const isInputCurrentAddress =
utxo.scriptpubkey_address === addressNativeSegwit ||
utxo.scriptpubkey_address === addressTaproot;
const inputValue = satToBtc(utxo.value).toString();
const inputValueAsMoney = createMoney(utxo.value, 'BTC');
return (
<PsbtDecodedNodeLayout
hoverLabel={utxo.scriptpubkey_address}
subtitle={truncateMiddle(utxo.scriptpubkey_address)}
subValue={i18nFormatCurrency(calculateBitcoinFiatValue(inputValue))}
value={`${isInputCurrentAddress ? '-' : '+'}${inputValue}`}
subValue={i18nFormatCurrency(calculateBitcoinFiatValue(inputValueAsMoney))}
value={`${isInputCurrentAddress ? '-' : '+'}${inputValueAsMoney.amount.toString()}`}
/>
);
}

View File

@@ -1,6 +1,7 @@
import { Box } from '@stacks/ui';
import { truncateMiddle } from '@stacks/ui-utils';
import { Money } from '@shared/models/money.model';
import { isUndefined } from '@shared/utils';
import { openInNewTab } from '@app/common/utils/open-in-new-tab';
@@ -13,12 +14,12 @@ import { PsbtDecodedNodeLayout } from '../../psbt-decoded-request-node/psbt-deco
interface PsbtUnsignedInputWithInscriptionProps {
address: string;
inputValue: string;
path: string;
value: Money;
}
export function PsbtUnsignedInputWithInscription({
address,
inputValue,
value,
path,
}: PsbtUnsignedInputWithInscriptionProps) {
const {
@@ -41,7 +42,7 @@ export function PsbtUnsignedInputWithInscription({
subtitle={truncateMiddle(address)}
subValue="# Unknown"
title="No data"
value={`-${inputValue}`}
value={`-${value.amount.toString()}`}
/>
);
@@ -53,7 +54,7 @@ export function PsbtUnsignedInputWithInscription({
subValue={`#${inscription.number}`}
subValueAction={() => openInNewTab(inscription.infoUrl)}
title="Ordinal inscription"
value={`-${inputValue}`}
value={`-${value.amount.toString()}`}
/>
);
}

View File

@@ -2,9 +2,9 @@ import * as btc from '@scure/btc-signer';
import { truncateMiddle } from '@stacks/ui-utils';
import { getAddressFromOutScript } from '@shared/crypto/bitcoin/bitcoin.utils';
import { createMoney } from '@shared/models/money.model';
import { i18nFormatCurrency } from '@app/common/money/format-money';
import { satToBtc } from '@app/common/money/unit-conversion';
import { useCalculateBitcoinFiatValue } from '@app/query/common/market-data/market-data.hooks';
import { useCurrentNetwork } from '@app/store/networks/networks.selectors';
@@ -27,14 +27,14 @@ export function PsbtUnsignedOutputItem({
const isOutputCurrentAddress =
addressFromScript === addressNativeSegwit || addressFromScript === addressTaproot;
const outputValue = satToBtc(Number(output.amount)).toString();
const outputValueAsMoney = createMoney(Number(output.amount), 'BTC');
return (
<PsbtDecodedNodeLayout
hoverLabel={addressFromScript}
subtitle={truncateMiddle(addressFromScript)}
subValue={i18nFormatCurrency(calculateBitcoinFiatValue(outputValue))}
value={`${isOutputCurrentAddress ? '+' : ' '}${outputValue}`}
subValue={i18nFormatCurrency(calculateBitcoinFiatValue(outputValueAsMoney))}
value={`${isOutputCurrentAddress ? '+' : ' '}${outputValueAsMoney.amount.toString()}`}
/>
);
}

View File

@@ -5,9 +5,8 @@ import BigNumber from 'bignumber.js';
import { CryptoCurrencies } from '@shared/models/currencies.model';
import { MarketData, createMarketData, createMarketPair } from '@shared/models/market.model';
import { createMoney, currencyDecimalsMap } from '@shared/models/money.model';
import { Money, createMoney, currencyDecimalsMap } from '@shared/models/money.model';
import { createMoneyFromDecimal } from '@shared/models/money.model';
import { isNumber } from '@shared/utils';
import { calculateMeanAverage } from '@app/common/math/calculate-averages';
import { convertAmountToFractionalUnit } from '@app/common/money/calculate-money';
@@ -59,11 +58,7 @@ export function useCalculateBitcoinFiatValue() {
const btcMarketData = useCryptoCurrencyMarketData('BTC');
return useCallback(
(value: string | number) =>
baseCurrencyAmountInQuote(
createMoneyFromDecimal(isNumber(value) ? value : Number(value), 'BTC'),
btcMarketData
),
(value: Money) => baseCurrencyAmountInQuote(value, btcMarketData),
[btcMarketData]
);
}