mirror of
https://github.com/sparrowwallet/sparrow.git
synced 2024-12-25 05:06:45 +00:00
add whirlpool postmix to the list of possible accounts that can be added to any legacy or segwit wallet
This commit is contained in:
parent
31539a27ac
commit
0724c38582
5 changed files with 21 additions and 7 deletions
2
drongo
2
drongo
|
@ -1 +1 @@
|
|||
Subproject commit 2b7b650faeeeda7fc25ab0962a6132e6531ced4c
|
||||
Subproject commit 73eed3e292d6e3f91402fe024aede18b5a50a509
|
|
@ -17,6 +17,8 @@ import org.controlsfx.glyphfont.Glyph;
|
|||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import static com.sparrowwallet.drongo.wallet.StandardAccount.*;
|
||||
|
||||
public class AddAccountDialog extends Dialog<List<StandardAccount>> {
|
||||
private final ComboBox<StandardAccount> standardAccountCombo;
|
||||
private boolean discoverAccounts = false;
|
||||
|
@ -53,13 +55,15 @@ public class AddAccountDialog extends Dialog<List<StandardAccount>> {
|
|||
|
||||
List<StandardAccount> availableAccounts = new ArrayList<>();
|
||||
for(StandardAccount standardAccount : StandardAccount.values()) {
|
||||
if(!existingIndexes.contains(standardAccount.getAccountNumber()) && !StandardAccount.WHIRLPOOL_ACCOUNTS.contains(standardAccount)) {
|
||||
if(!existingIndexes.contains(standardAccount.getAccountNumber()) && !WHIRLPOOL_ACCOUNTS.contains(standardAccount)) {
|
||||
availableAccounts.add(standardAccount);
|
||||
}
|
||||
}
|
||||
|
||||
if(WhirlpoolServices.canWalletMix(masterWallet) && !masterWallet.isWhirlpoolMasterWallet()) {
|
||||
availableAccounts.add(StandardAccount.WHIRLPOOL_PREMIX);
|
||||
availableAccounts.add(WHIRLPOOL_PREMIX);
|
||||
} else if(WhirlpoolServices.canWatchPostmix(masterWallet) && !existingIndexes.contains(WHIRLPOOL_POSTMIX.getAccountNumber())) {
|
||||
availableAccounts.add(WHIRLPOOL_POSTMIX);
|
||||
}
|
||||
|
||||
final ButtonType discoverButtonType = new javafx.scene.control.ButtonType("Discover", ButtonBar.ButtonData.LEFT);
|
||||
|
@ -82,10 +86,14 @@ public class AddAccountDialog extends Dialog<List<StandardAccount>> {
|
|||
return "None Available";
|
||||
}
|
||||
|
||||
if(StandardAccount.WHIRLPOOL_ACCOUNTS.contains(account)) {
|
||||
if(account == WHIRLPOOL_PREMIX) {
|
||||
return "Whirlpool Accounts";
|
||||
}
|
||||
|
||||
if(account == WHIRLPOOL_POSTMIX) {
|
||||
return "Whirlpool Postmix (No mixing)";
|
||||
}
|
||||
|
||||
return account.getName();
|
||||
}
|
||||
|
||||
|
|
|
@ -427,7 +427,7 @@ public class SendController extends WalletFormController implements Initializabl
|
|||
addFeeRangeTrackHighlight(0);
|
||||
|
||||
efficiencyToggle.setOnAction(event -> {
|
||||
if(getWalletForm().getWallet().isWhirlpoolMixWallet() && !overrideOptimizationStrategy) {
|
||||
if(StandardAccount.WHIRLPOOL_MIX_ACCOUNTS.contains(getWalletForm().getWallet().getStandardAccountType()) && !overrideOptimizationStrategy) {
|
||||
AppServices.showWarningDialog("Privacy may be lost!", "It is recommended to optimize for privacy when sending coinjoined outputs.");
|
||||
overrideOptimizationStrategy = true;
|
||||
}
|
||||
|
@ -1071,7 +1071,7 @@ public class SendController extends WalletFormController implements Initializabl
|
|||
|
||||
private OptimizationStrategy getPreferredOptimizationStrategy() {
|
||||
OptimizationStrategy optimizationStrategy = Config.get().getSendOptimizationStrategy();
|
||||
if(getWalletForm().getWallet().isWhirlpoolMixWallet() && !overrideOptimizationStrategy) {
|
||||
if(StandardAccount.WHIRLPOOL_MIX_ACCOUNTS.contains(getWalletForm().getWallet().getStandardAccountType()) && !overrideOptimizationStrategy) {
|
||||
optimizationStrategy = OptimizationStrategy.PRIVACY;
|
||||
}
|
||||
|
||||
|
|
|
@ -655,7 +655,7 @@ public class SettingsController extends WalletFormController implements Initiali
|
|||
|
||||
private void addAndSaveAccount(Wallet masterWallet, StandardAccount standardAccount, Key key) {
|
||||
List<Wallet> childWallets;
|
||||
if(StandardAccount.WHIRLPOOL_ACCOUNTS.contains(standardAccount)) {
|
||||
if(standardAccount == StandardAccount.WHIRLPOOL_PREMIX) {
|
||||
childWallets = WhirlpoolServices.prepareWhirlpoolWallet(masterWallet, getWalletForm().getWalletId(), getWalletForm().getStorage());
|
||||
} else {
|
||||
Wallet childWallet = masterWallet.addChildWallet(standardAccount);
|
||||
|
|
|
@ -170,6 +170,12 @@ public class WhirlpoolServices {
|
|||
&& StandardAccount.MIXABLE_ACCOUNTS.contains(wallet.getStandardAccountType());
|
||||
}
|
||||
|
||||
public static boolean canWatchPostmix(Wallet wallet) {
|
||||
return Whirlpool.WHIRLPOOL_NETWORKS.contains(Network.get())
|
||||
&& wallet.getScriptType() != ScriptType.P2TR //Taproot not yet supported
|
||||
&& wallet.getKeystores().size() == 1;
|
||||
}
|
||||
|
||||
public static List<Wallet> prepareWhirlpoolWallet(Wallet decryptedWallet, String walletId, Storage storage) {
|
||||
Whirlpool whirlpool = AppServices.getWhirlpoolServices().getWhirlpool(walletId);
|
||||
whirlpool.setScode(decryptedWallet.getMasterMixConfig().getScode());
|
||||
|
|
Loading…
Reference in a new issue