mirror of
https://github.com/sparrowwallet/sparrow.git
synced 2024-11-04 13:26:44 +00:00
terminal - fix add account encryption and normalize ui widths
This commit is contained in:
parent
cbf847a57f
commit
603df6d0f6
9 changed files with 45 additions and 29 deletions
|
@ -38,7 +38,8 @@ public class AddressesDialog extends WalletDialog {
|
|||
|
||||
updateAddresses();
|
||||
|
||||
Panel buttonPanel = new Panel(new GridLayout(4).setHorizontalSpacing(2).setVerticalSpacing(0));
|
||||
Panel buttonPanel = new Panel(new GridLayout(5).setHorizontalSpacing(2).setVerticalSpacing(0));
|
||||
buttonPanel.addComponent(new EmptySpace(new TerminalSize(15, 1)));
|
||||
buttonPanel.addComponent(new EmptySpace(new TerminalSize(15, 1)));
|
||||
buttonPanel.addComponent(new EmptySpace(new TerminalSize(15, 1)));
|
||||
buttonPanel.addComponent(new Button("Back", () -> onBack(Function.ADDRESSES)));
|
||||
|
@ -74,7 +75,7 @@ public class AddressesDialog extends WalletDialog {
|
|||
|
||||
private String[] getTableColumns() {
|
||||
String address = getWalletForm().getNodeEntry(KeyPurpose.RECEIVE).getAddress().toString();
|
||||
return new String[] {centerPad("Address", address.length()), centerPad("Value", CoinTableCell.TRANSACTION_WIDTH)};
|
||||
return new String[] {centerPad("Address", Math.max(AddressTableCell.ADDRESS_MIN_WIDTH, address.length())), centerPad("Value", CoinTableCell.UTXO_WIDTH)};
|
||||
}
|
||||
|
||||
private void updateAddressesLater() {
|
||||
|
|
|
@ -288,34 +288,37 @@ public class SettingsDialog extends WalletDialog {
|
|||
});
|
||||
}
|
||||
} else {
|
||||
Platform.runLater(() -> addAndSaveAccount(masterWallet, standardAccount));
|
||||
Platform.runLater(() -> addAndSaveAccount(masterWallet, standardAccount, null));
|
||||
}
|
||||
}
|
||||
|
||||
private void addAndEncryptAccount(Wallet masterWallet, StandardAccount standardAccount, Key key) {
|
||||
try {
|
||||
addAndSaveAccount(masterWallet, standardAccount);
|
||||
addAndSaveAccount(masterWallet, standardAccount, key);
|
||||
} finally {
|
||||
masterWallet.encrypt(key);
|
||||
for(Wallet childWallet : masterWallet.getChildWallets()) {
|
||||
if(!childWallet.isNested() && !childWallet.isEncrypted()) {
|
||||
childWallet.encrypt(key);
|
||||
}
|
||||
}
|
||||
key.clear();
|
||||
}
|
||||
}
|
||||
|
||||
private void addAndSaveAccount(Wallet masterWallet, StandardAccount standardAccount) {
|
||||
private void addAndSaveAccount(Wallet masterWallet, StandardAccount standardAccount, Key key) {
|
||||
List<Wallet> childWallets;
|
||||
if(StandardAccount.WHIRLPOOL_ACCOUNTS.contains(standardAccount)) {
|
||||
WhirlpoolServices.prepareWhirlpoolWallet(masterWallet, getWalletForm().getWalletId(), getWalletForm().getStorage());
|
||||
childWallets = WhirlpoolServices.prepareWhirlpoolWallet(masterWallet, getWalletForm().getWalletId(), getWalletForm().getStorage());
|
||||
SparrowTerminal.get().getGuiThread().invokeLater(() -> showSuccessDialog("Added Accounts", "Whirlpool Accounts have been successfully added."));
|
||||
} else {
|
||||
Wallet childWallet = masterWallet.addChildWallet(standardAccount);
|
||||
EventManager.get().post(new ChildWalletsAddedEvent(getWalletForm().getStorage(), masterWallet, childWallet));
|
||||
childWallets = List.of(childWallet);
|
||||
SparrowTerminal.get().getGuiThread().invokeLater(() -> showSuccessDialog("Added Account", standardAccount.getName() + " has been successfully added."));
|
||||
}
|
||||
|
||||
if(key != null) {
|
||||
for(Wallet childWallet : childWallets) {
|
||||
childWallet.encrypt(key);
|
||||
}
|
||||
}
|
||||
|
||||
saveChildWallets(masterWallet);
|
||||
}
|
||||
|
||||
|
|
|
@ -57,7 +57,8 @@ public class TransactionsDialog extends WalletDialog {
|
|||
updateLabels(walletTransactionsEntry);
|
||||
updateHistory(getWalletForm().getWalletTransactionsEntry());
|
||||
|
||||
Panel buttonPanel = new Panel(new GridLayout(4).setHorizontalSpacing(2).setVerticalSpacing(0));
|
||||
Panel buttonPanel = new Panel(new GridLayout(5).setHorizontalSpacing(2).setVerticalSpacing(0));
|
||||
buttonPanel.addComponent(new EmptySpace(new TerminalSize(15, 1)));
|
||||
buttonPanel.addComponent(new EmptySpace(new TerminalSize(15, 1)));
|
||||
buttonPanel.addComponent(new EmptySpace(new TerminalSize(15, 1)));
|
||||
buttonPanel.addComponent(new Button("Back", () -> onBack(Function.TRANSACTIONS)));
|
||||
|
|
|
@ -103,12 +103,12 @@ public class UtxosDialog extends WalletDialog {
|
|||
updateLabels(walletUtxosEntry);
|
||||
updateHistory(getWalletForm().getWalletUtxosEntry());
|
||||
|
||||
Panel buttonPanel = new Panel(new GridLayout(4).setHorizontalSpacing(2).setVerticalSpacing(0));
|
||||
Panel buttonPanel = new Panel(new GridLayout(5).setHorizontalSpacing(2).setVerticalSpacing(0));
|
||||
if(getWalletForm().getWallet().isWhirlpoolMixWallet()) {
|
||||
startMix = new Button("Start Mixing", this::toggleMixing).setSize(new TerminalSize(20, 1)).addTo(buttonPanel);
|
||||
startMix.setEnabled(AppServices.onlineProperty().get());
|
||||
|
||||
mixTo = new Button("Mix to...", this::showMixToDialog).addTo(buttonPanel);
|
||||
mixTo = new Button("Mix to...", this::showMixToDialog);
|
||||
if(getWalletForm().getWallet().getStandardAccountType() == StandardAccount.WHIRLPOOL_POSTMIX) {
|
||||
buttonPanel.addComponent(mixTo);
|
||||
} else {
|
||||
|
@ -132,9 +132,11 @@ public class UtxosDialog extends WalletDialog {
|
|||
|
||||
AppServices.onlineProperty().addListener(new WeakChangeListener<>(mixingOnlineListener));
|
||||
|
||||
buttonPanel.addComponent(new EmptySpace(new TerminalSize(15, 1)));
|
||||
buttonPanel.addComponent(new Button("Back", () -> onBack(Function.UTXOS)));
|
||||
buttonPanel.addComponent(new Button("Refresh", this::onRefresh));
|
||||
} else {
|
||||
buttonPanel.addComponent(new EmptySpace(new TerminalSize(15, 1)));
|
||||
buttonPanel.addComponent(new EmptySpace(new TerminalSize(15, 1)));
|
||||
buttonPanel.addComponent(new EmptySpace(new TerminalSize(15, 1)));
|
||||
buttonPanel.addComponent(new Button("Back", () -> onBack(Function.UTXOS)));
|
||||
|
|
|
@ -5,6 +5,7 @@ import com.sparrowwallet.sparrow.wallet.NodeEntry;
|
|||
import com.sparrowwallet.sparrow.wallet.UtxoEntry;
|
||||
|
||||
public class AddressTableCell extends TableCell {
|
||||
public static final int ADDRESS_MIN_WIDTH = 52;
|
||||
public static final int UTXO_WIDTH = 18;
|
||||
|
||||
public AddressTableCell(Entry entry) {
|
||||
|
|
|
@ -5,10 +5,11 @@ import com.sparrowwallet.drongo.BitcoinUnit;
|
|||
import com.sparrowwallet.sparrow.UnitFormat;
|
||||
import com.sparrowwallet.sparrow.io.Config;
|
||||
import com.sparrowwallet.sparrow.wallet.Entry;
|
||||
import com.sparrowwallet.sparrow.wallet.NodeEntry;
|
||||
import com.sparrowwallet.sparrow.wallet.TransactionEntry;
|
||||
|
||||
public class CoinTableCell extends TableCell {
|
||||
public static final int TRANSACTION_WIDTH = 20;
|
||||
public static final int TRANSACTION_WIDTH = 24;
|
||||
public static final int UTXO_WIDTH = 18;
|
||||
|
||||
private final boolean balance;
|
||||
|
|
|
@ -9,7 +9,7 @@ import java.text.SimpleDateFormat;
|
|||
|
||||
public class DateTableCell extends TableCell {
|
||||
private static final DateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm");
|
||||
public static final int TRANSACTION_WIDTH = 20;
|
||||
public static final int TRANSACTION_WIDTH = 23;
|
||||
public static final int UTXO_WIDTH = 18;
|
||||
|
||||
public DateTableCell(Entry entry) {
|
||||
|
|
|
@ -547,7 +547,7 @@ public class SettingsController extends WalletFormController implements Initiali
|
|||
} else if(discoverAccounts) {
|
||||
ElectrumServer.AccountDiscoveryService accountDiscoveryService = new ElectrumServer.AccountDiscoveryService(masterWallet, standardAccounts);
|
||||
accountDiscoveryService.setOnSucceeded(event -> {
|
||||
addAndSaveAccounts(masterWallet, accountDiscoveryService.getValue());
|
||||
addAndSaveAccounts(masterWallet, accountDiscoveryService.getValue(), null);
|
||||
if(accountDiscoveryService.getValue().isEmpty()) {
|
||||
AppServices.showAlertDialog("No Accounts Found", "No new accounts with existing transactions were found. Note only the first 10 accounts are scanned.", Alert.AlertType.INFORMATION, ButtonType.OK);
|
||||
}
|
||||
|
@ -558,7 +558,7 @@ public class SettingsController extends WalletFormController implements Initiali
|
|||
});
|
||||
accountDiscoveryService.start();
|
||||
} else {
|
||||
addAndSaveAccounts(masterWallet, standardAccounts);
|
||||
addAndSaveAccounts(masterWallet, standardAccounts, null);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
@ -591,30 +591,33 @@ public class SettingsController extends WalletFormController implements Initiali
|
|||
|
||||
private void addAndEncryptAccounts(Wallet masterWallet, List<StandardAccount> standardAccounts, Key key) {
|
||||
try {
|
||||
addAndSaveAccounts(masterWallet, standardAccounts);
|
||||
addAndSaveAccounts(masterWallet, standardAccounts, key);
|
||||
} finally {
|
||||
masterWallet.encrypt(key);
|
||||
for(Wallet childWallet : masterWallet.getChildWallets()) {
|
||||
if(!childWallet.isNested() && !childWallet.isEncrypted()) {
|
||||
childWallet.encrypt(key);
|
||||
}
|
||||
}
|
||||
key.clear();
|
||||
}
|
||||
}
|
||||
|
||||
private void addAndSaveAccounts(Wallet masterWallet, List<StandardAccount> standardAccounts) {
|
||||
private void addAndSaveAccounts(Wallet masterWallet, List<StandardAccount> standardAccounts, Key key) {
|
||||
for(StandardAccount standardAccount : standardAccounts) {
|
||||
addAndSaveAccount(masterWallet, standardAccount);
|
||||
addAndSaveAccount(masterWallet, standardAccount, key);
|
||||
}
|
||||
}
|
||||
|
||||
private void addAndSaveAccount(Wallet masterWallet, StandardAccount standardAccount) {
|
||||
private void addAndSaveAccount(Wallet masterWallet, StandardAccount standardAccount, Key key) {
|
||||
List<Wallet> childWallets;
|
||||
if(StandardAccount.WHIRLPOOL_ACCOUNTS.contains(standardAccount)) {
|
||||
WhirlpoolServices.prepareWhirlpoolWallet(masterWallet, getWalletForm().getWalletId(), getWalletForm().getStorage());
|
||||
childWallets = WhirlpoolServices.prepareWhirlpoolWallet(masterWallet, getWalletForm().getWalletId(), getWalletForm().getStorage());
|
||||
} else {
|
||||
Wallet childWallet = masterWallet.addChildWallet(standardAccount);
|
||||
EventManager.get().post(new ChildWalletsAddedEvent(getWalletForm().getStorage(), masterWallet, childWallet));
|
||||
childWallets = List.of(childWallet);
|
||||
}
|
||||
|
||||
if(key != null) {
|
||||
for(Wallet childWallet : childWallets) {
|
||||
childWallet.encrypt(key);
|
||||
}
|
||||
}
|
||||
|
||||
saveChildWallets(masterWallet);
|
||||
|
|
|
@ -170,7 +170,7 @@ public class WhirlpoolServices {
|
|||
&& StandardAccount.MIXABLE_ACCOUNTS.contains(wallet.getStandardAccountType());
|
||||
}
|
||||
|
||||
public static void prepareWhirlpoolWallet(Wallet decryptedWallet, String walletId, Storage storage) {
|
||||
public static List<Wallet> prepareWhirlpoolWallet(Wallet decryptedWallet, String walletId, Storage storage) {
|
||||
Whirlpool whirlpool = AppServices.getWhirlpoolServices().getWhirlpool(walletId);
|
||||
whirlpool.setScode(decryptedWallet.getMasterMixConfig().getScode());
|
||||
whirlpool.setHDWallet(walletId, decryptedWallet);
|
||||
|
@ -179,12 +179,16 @@ public class WhirlpoolServices {
|
|||
Soroban soroban = AppServices.getSorobanServices().getSoroban(walletId);
|
||||
soroban.setHDWallet(decryptedWallet);
|
||||
|
||||
List<Wallet> childWallets = new ArrayList<>();
|
||||
for(StandardAccount whirlpoolAccount : StandardAccount.WHIRLPOOL_ACCOUNTS) {
|
||||
if(decryptedWallet.getChildWallet(whirlpoolAccount) == null) {
|
||||
Wallet childWallet = decryptedWallet.addChildWallet(whirlpoolAccount);
|
||||
childWallets.add(childWallet);
|
||||
EventManager.get().post(new ChildWalletsAddedEvent(storage, decryptedWallet, childWallet));
|
||||
}
|
||||
}
|
||||
|
||||
return childWallets;
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
|
|
Loading…
Reference in a new issue