From e3799cd0a81c3ec9477ce8da2b53f966513269eb Mon Sep 17 00:00:00 2001 From: Craig Raw Date: Mon, 13 Feb 2023 18:27:21 +0200 Subject: [PATCH] fix error receiving a stowaway to postmix by reverting to master wallet --- .../soroban/CounterpartyController.java | 22 ++++++++++++------- .../sparrow/soroban/SparrowCahootsWallet.java | 4 ++++ 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/sparrowwallet/sparrow/soroban/CounterpartyController.java b/src/main/java/com/sparrowwallet/sparrow/soroban/CounterpartyController.java index 6a342ad1..af3f1e26 100644 --- a/src/main/java/com/sparrowwallet/sparrow/soroban/CounterpartyController.java +++ b/src/main/java/com/sparrowwallet/sparrow/soroban/CounterpartyController.java @@ -8,13 +8,9 @@ import com.samourai.wallet.cahoots.Cahoots; import com.samourai.wallet.cahoots.CahootsType; import com.sparrowwallet.drongo.protocol.Transaction; import com.sparrowwallet.drongo.psbt.PSBTParseException; -import com.sparrowwallet.drongo.wallet.BlockTransactionHashIndex; -import com.sparrowwallet.drongo.wallet.Status; -import com.sparrowwallet.drongo.wallet.Wallet; -import com.sparrowwallet.drongo.wallet.WalletNode; +import com.sparrowwallet.drongo.wallet.*; import com.sparrowwallet.sparrow.AppServices; import com.sparrowwallet.sparrow.control.*; -import com.sparrowwallet.sparrow.io.Config; import com.sparrowwallet.sparrow.paynym.PayNymDialog; import com.sparrowwallet.sparrow.paynym.PayNymService; import io.reactivex.rxjavafx.schedulers.JavaFxScheduler; @@ -298,10 +294,20 @@ public class CounterpartyController extends SorobanController { sorobanProgressLabel.setText("Creating mix transaction..."); Soroban soroban = AppServices.getSorobanServices().getSoroban(walletId); - Map walletUtxos = wallet.getWalletUtxos(); + Wallet counterpartyWallet; + if(counterpartyCahootsWallet.getAccount() == StandardAccount.WHIRLPOOL_POSTMIX.getAccountNumber() && cahootsType == CahootsType.STOWAWAY + && !counterpartyCahootsWallet.getWallet().isMasterWallet()) { + //Counterparty cannot participate in Stowaway using Postmix wallet, switch to master wallet + counterpartyWallet = counterpartyCahootsWallet.getWallet().getMasterWallet(); + counterpartyCahootsWallet = soroban.getCahootsWallet(counterpartyWallet, 1); + } else { + counterpartyWallet = wallet; + } + + Map walletUtxos = counterpartyWallet.getWalletUtxos(); for(Map.Entry entry : walletUtxos.entrySet()) { if(entry.getKey().getStatus() != Status.FROZEN) { - counterpartyCahootsWallet.addUtxo(entry.getValue(), wallet.getWalletTransaction(entry.getKey().getHash()), (int)entry.getKey().getIndex()); + counterpartyCahootsWallet.addUtxo(entry.getValue(), counterpartyWallet.getWalletTransaction(entry.getKey().getHash()), (int)entry.getKey().getIndex()); } } @@ -325,7 +331,7 @@ public class CounterpartyController extends SorobanController { Transaction transaction = getTransaction(cahoots); if(transaction != null) { transactionProperty.set(transaction); - updateTransactionDiagram(transactionDiagram, wallet, null, transaction); + updateTransactionDiagram(transactionDiagram, counterpartyWallet, null, transaction); next(); } } catch(PSBTParseException e) { diff --git a/src/main/java/com/sparrowwallet/sparrow/soroban/SparrowCahootsWallet.java b/src/main/java/com/sparrowwallet/sparrow/soroban/SparrowCahootsWallet.java index d49c0bbe..367950c9 100644 --- a/src/main/java/com/sparrowwallet/sparrow/soroban/SparrowCahootsWallet.java +++ b/src/main/java/com/sparrowwallet/sparrow/soroban/SparrowCahootsWallet.java @@ -62,6 +62,10 @@ public class SparrowCahootsWallet extends SimpleCahootsWallet { addUtxo(account, cahootsUtxo); } + public Wallet getWallet() { + return wallet; + } + public int getAccount() { return account; }