From d60323961bbbb4094766234d0b2e6cd6f2aaba9d Mon Sep 17 00:00:00 2001 From: Marcos Rodriguez Date: Tue, 10 Dec 2019 23:13:40 -0500 Subject: [PATCH] ADD: Toggle for RBF Update hd-segwit-bech32-wallet.js Update details.js Update details.js --- class/hd-segwit-bech32-wallet.js | 6 +++++- screen/send/details.js | 22 +++++++++++++++++++++- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/class/hd-segwit-bech32-wallet.js b/class/hd-segwit-bech32-wallet.js index 1dc0b894d..cfbe55bfe 100644 --- a/class/hd-segwit-bech32-wallet.js +++ b/class/hd-segwit-bech32-wallet.js @@ -727,7 +727,11 @@ export class HDSegwitBech32Wallet extends AbstractHDWallet { */ createTransaction(utxos, targets, feeRate, changeAddress, sequence, skipSigning = false) { if (!changeAddress) throw new Error('No change address provided'); - sequence = sequence || HDSegwitBech32Wallet.defaultRBFSequence; + if (sequence === false) { + sequence = undefined; + } else { + sequence = sequence || HDSegwitBech32Wallet.defaultRBFSequence; + } let algo = coinSelectAccumulative; if (targets.length === 1 && targets[0] && !targets[0].value) { diff --git a/screen/send/details.js b/screen/send/details.js index 9c04a5fdc..31e2f68d9 100644 --- a/screen/send/details.js +++ b/screen/send/details.js @@ -84,6 +84,7 @@ export default class SendDetails extends Component { showSendMax: false, isFeeSelectionModalVisible: false, isAdvancedTransactionOptionsVisible: false, + isTransactionReplaceable: fromWallet.type === HDSegwitBech32Wallet.type, recipientsScrollIndex: 0, fromAddress, fromWallet, @@ -535,7 +536,13 @@ export default class SendDetails extends Component { targets = [{ address: firstTransaction.address, amount: BitcoinUnit.MAX }]; } - let { tx, fee, psbt } = wallet.createTransaction(wallet.getUtxo(), targets, requestedSatPerByte, changeAddress); + let { tx, fee, psbt } = wallet.createTransaction( + wallet.getUtxo(), + targets, + requestedSatPerByte, + changeAddress, + this.state.isTransactionReplaceable === true ? HDSegwitBech32Wallet.defaultRBFSequence : false, + ); if (wallet.type === WatchOnlyWallet.type) { // watch-only wallets with enabled HW wallet support have different flow. we have to show PSBT to user as QR code @@ -720,6 +727,15 @@ export default class SendDetails extends Component { onPress={this.onUseAllPressed} /> )} + {this.state.fromWallet.type === HDSegwitBech32Wallet.type && ( + + )} {this.state.fromWallet.allowBatchSend() && ( <> { + this.setState({ isTransactionReplaceable: value }); + }; + renderCreateButton = () => { return (