mirror of
https://github.com/zhigang1992/wallet.git
synced 2026-01-12 22:53:27 +08:00
feat: hide increase fee for txs with taproot input
This commit is contained in:
@@ -22,12 +22,14 @@ import { createInscriptionInfoUrl } from '@app/query/bitcoin/ordinals/inscriptio
|
||||
import { useInscriptionByOutput } from '@app/query/bitcoin/ordinals/use-inscription-by-output';
|
||||
import { useCurrentAccountNativeSegwitAddressIndexZero } from '@app/store/accounts/blockchain/bitcoin/native-segwit-account.hooks';
|
||||
|
||||
import { CaptionDotSeparator } from '../caption-dot-separator';
|
||||
import { TransactionItemLayout } from '../transaction-item/transaction-item.layout';
|
||||
import { BitcoinTransactionCaption } from './bitcoin-transaction-caption';
|
||||
import { BitcoinTransactionIcon } from './bitcoin-transaction-icon';
|
||||
import { BitcoinTransactionInscriptionIcon } from './bitcoin-transaction-inscription-icon';
|
||||
import { BitcoinTransactionStatus } from './bitcoin-transaction-status';
|
||||
import { BitcoinTransactionValue } from './bitcoin-transaction-value';
|
||||
import { containsTaprootInput } from './utils';
|
||||
|
||||
interface BitcoinTransactionItemProps extends BoxProps {
|
||||
transaction: BitcoinTx;
|
||||
@@ -73,9 +75,17 @@ export function BitcoinTransactionItem({ transaction, ...rest }: BitcoinTransact
|
||||
};
|
||||
|
||||
const isOriginator = !isBitcoinTxInbound(bitcoinAddress, transaction);
|
||||
const isEnabled = isOriginator && !transaction.status.confirmed;
|
||||
const isEnabled =
|
||||
isOriginator && !transaction.status.confirmed && !containsTaprootInput(transaction);
|
||||
|
||||
const txCaption = <BitcoinTransactionCaption>{caption}</BitcoinTransactionCaption>;
|
||||
const txCaption = (
|
||||
<CaptionDotSeparator>
|
||||
<BitcoinTransactionCaption>{caption}</BitcoinTransactionCaption>
|
||||
{inscriptionData ? (
|
||||
<BitcoinTransactionCaption>{inscriptionData.mime_type}</BitcoinTransactionCaption>
|
||||
) : null}
|
||||
</CaptionDotSeparator>
|
||||
);
|
||||
const txValue = <BitcoinTransactionValue>{value}</BitcoinTransactionValue>;
|
||||
const txIcon = inscriptionData ? (
|
||||
<BitcoinTransactionInscriptionIcon
|
||||
@@ -86,7 +96,7 @@ export function BitcoinTransactionItem({ transaction, ...rest }: BitcoinTransact
|
||||
) : (
|
||||
<BitcoinTransactionIcon transaction={transaction} btcAddress={bitcoinAddress} />
|
||||
);
|
||||
const title = inscriptionData ? 'Ordinal inscription' : 'Bitcoin';
|
||||
const title = inscriptionData ? `Ordinal inscription #${inscriptionData.number}` : 'Bitcoin';
|
||||
const increaseFeeButton = (
|
||||
<IncreaseFeeButton
|
||||
isEnabled={isEnabled}
|
||||
|
||||
@@ -27,3 +27,7 @@ export function IconForTx(address: string, tx: BitcoinTx) {
|
||||
if (isBitcoinTxInbound(address, tx)) return IconArrowDown;
|
||||
return IconArrowUp;
|
||||
}
|
||||
|
||||
export function containsTaprootInput(tx: BitcoinTx) {
|
||||
return tx.vin.some(input => input.prevout.scriptpubkey_type === 'v1_p2tr');
|
||||
}
|
||||
|
||||
@@ -50,7 +50,7 @@ export function ActivityList() {
|
||||
trBitcoinAddress,
|
||||
]);
|
||||
const bitcoinPendingTxs = useMemo(
|
||||
() => [...nsPendingTxs, ...trPendingTxs],
|
||||
() => uniqby([...nsPendingTxs, ...trPendingTxs], 'txid'),
|
||||
[nsPendingTxs, trPendingTxs]
|
||||
);
|
||||
|
||||
|
||||
@@ -6,8 +6,10 @@ import { useGetInscriptionByParamQuery } from './use-inscription-by-param.query'
|
||||
export function useInscriptionByOutput(transaction: BitcoinTx) {
|
||||
const inputsLength = transaction.vin.length;
|
||||
const index = inputsLength === 1 ? 0 : inputsLength - 2;
|
||||
const isPending = !transaction.status.confirmed;
|
||||
const id = isPending ? transaction.vin[index].txid : transaction.txid;
|
||||
|
||||
return useGetInscriptionByParamQuery(`output=${transaction.txid}:${index}`, {
|
||||
return useGetInscriptionByParamQuery(`output=${id}:${index}`, {
|
||||
select(data) {
|
||||
const inscription = data.results[0];
|
||||
if (!inscription) return;
|
||||
|
||||
Reference in New Issue
Block a user