mirror of
https://github.com/zhigang1992/wallet.git
synced 2026-01-12 22:53:27 +08:00
refactor: calc btc fiat value hook
This commit is contained in:
@@ -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()}`}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -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()}`}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -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()}`}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -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()}`}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -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]
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user