diff --git a/drongo b/drongo index b2c362d5..342c85a3 160000 --- a/drongo +++ b/drongo @@ -1 +1 @@ -Subproject commit b2c362d5a71b8c46f8990a6b6b9b96f81ee24c90 +Subproject commit 342c85a39e45c8e14c4b35f5188ecf93a6c826d6 diff --git a/src/main/java/com/sparrowwallet/sparrow/control/LabelCell.java b/src/main/java/com/sparrowwallet/sparrow/control/LabelCell.java index 2d8988da..96644fec 100644 --- a/src/main/java/com/sparrowwallet/sparrow/control/LabelCell.java +++ b/src/main/java/com/sparrowwallet/sparrow/control/LabelCell.java @@ -1,16 +1,20 @@ package com.sparrowwallet.sparrow.control; import com.sparrowwallet.drongo.wallet.BlockTransactionHash; +import com.sparrowwallet.drongo.wallet.Persistable; import com.sparrowwallet.sparrow.wallet.Entry; +import javafx.animation.PauseTransition; import javafx.application.Platform; import javafx.beans.property.IntegerProperty; import javafx.beans.property.SimpleIntegerProperty; import javafx.event.Event; +import javafx.geometry.Point2D; import javafx.scene.control.*; import javafx.scene.control.cell.TextFieldTreeTableCell; import javafx.scene.input.Clipboard; import javafx.scene.input.ClipboardContent; import javafx.scene.input.DataFormat; +import javafx.util.Duration; import javafx.util.converter.DefaultStringConverter; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -47,6 +51,20 @@ class LabelCell extends TextFieldTreeTableCell implements Confirm public void commitEdit(String label) { if(label != null) { label = label.trim(); + if(label.length() > Persistable.MAX_LABEL_LENGTH) { + label = label.substring(0, Persistable.MAX_LABEL_LENGTH); + Platform.runLater(() -> { + Point2D p = this.localToScene(0.0, 0.0); + final Tooltip truncateTooltip = new Tooltip(); + truncateTooltip.setText("Labels are truncated at " + Persistable.MAX_LABEL_LENGTH + " characters"); + truncateTooltip.setAutoHide(true); + truncateTooltip.show(this, p.getX() + this.getScene().getX() + this.getScene().getWindow().getX() + this.getHeight(), + p.getY() + this.getScene().getY() + this.getScene().getWindow().getY() + this.getHeight()); + PauseTransition pt = new PauseTransition(Duration.millis(2000)); + pt.setOnFinished(_ -> truncateTooltip.hide()); + pt.play(); + }); + } } // This block is necessary to support commit on losing focus, because diff --git a/src/main/java/com/sparrowwallet/sparrow/io/db/BlockTransactionDao.java b/src/main/java/com/sparrowwallet/sparrow/io/db/BlockTransactionDao.java index 2c707560..48cb201c 100644 --- a/src/main/java/com/sparrowwallet/sparrow/io/db/BlockTransactionDao.java +++ b/src/main/java/com/sparrowwallet/sparrow/io/db/BlockTransactionDao.java @@ -61,6 +61,6 @@ public interface BlockTransactionDao { } default String truncate(String label) { - return (label != null && label.length() > 255 ? label.substring(0, 255) : label); + return (label != null && label.length() > BlockTransaction.MAX_LABEL_LENGTH ? label.substring(0, BlockTransaction.MAX_LABEL_LENGTH) : label); } } diff --git a/src/main/java/com/sparrowwallet/sparrow/io/db/DbPersistence.java b/src/main/java/com/sparrowwallet/sparrow/io/db/DbPersistence.java index ec612a81..fdd7a571 100644 --- a/src/main/java/com/sparrowwallet/sparrow/io/db/DbPersistence.java +++ b/src/main/java/com/sparrowwallet/sparrow/io/db/DbPersistence.java @@ -268,7 +268,7 @@ public class DbPersistence implements Persistence { } if(dirtyPersistables.label != null) { - walletDao.updateLabel(wallet.getId(), dirtyPersistables.label.length() > 255 ? dirtyPersistables.label.substring(0, 255) : dirtyPersistables.label); + walletDao.updateLabel(wallet.getId(), dirtyPersistables.label.length() > Wallet.MAX_LABEL_LENGTH ? dirtyPersistables.label.substring(0, Wallet.MAX_LABEL_LENGTH) : dirtyPersistables.label); } if(dirtyPersistables.blockHeight != null) { diff --git a/src/main/java/com/sparrowwallet/sparrow/io/db/DetachedLabelDao.java b/src/main/java/com/sparrowwallet/sparrow/io/db/DetachedLabelDao.java index 292b53e3..39c6ef35 100644 --- a/src/main/java/com/sparrowwallet/sparrow/io/db/DetachedLabelDao.java +++ b/src/main/java/com/sparrowwallet/sparrow/io/db/DetachedLabelDao.java @@ -1,5 +1,6 @@ package com.sparrowwallet.sparrow.io.db; +import com.sparrowwallet.drongo.wallet.Persistable; import com.sparrowwallet.drongo.wallet.Wallet; import org.jdbi.v3.sqlobject.config.RegisterRowMapper; import org.jdbi.v3.sqlobject.statement.SqlBatch; @@ -26,7 +27,7 @@ public interface DetachedLabelDao { List labels = new ArrayList<>(); for(Map.Entry labelEntry : new HashSet<>(wallet.getDetachedLabels().entrySet())) { entries.add(truncate(labelEntry.getKey(), 80)); - labels.add(truncate(labelEntry.getValue(), 255)); + labels.add(truncate(labelEntry.getValue(), Persistable.MAX_LABEL_LENGTH)); } insertDetachedLabels(entries, labels); diff --git a/src/main/java/com/sparrowwallet/sparrow/io/db/KeystoreDao.java b/src/main/java/com/sparrowwallet/sparrow/io/db/KeystoreDao.java index a887e5c2..b5b1a239 100644 --- a/src/main/java/com/sparrowwallet/sparrow/io/db/KeystoreDao.java +++ b/src/main/java/com/sparrowwallet/sparrow/io/db/KeystoreDao.java @@ -1,10 +1,7 @@ package com.sparrowwallet.sparrow.io.db; import com.sparrowwallet.drongo.crypto.EncryptedData; -import com.sparrowwallet.drongo.wallet.DeterministicSeed; -import com.sparrowwallet.drongo.wallet.Keystore; -import com.sparrowwallet.drongo.wallet.MasterPrivateExtendedKey; -import com.sparrowwallet.drongo.wallet.Wallet; +import com.sparrowwallet.drongo.wallet.*; import org.jdbi.v3.sqlobject.config.RegisterRowMapper; import org.jdbi.v3.sqlobject.statement.GetGeneratedKeys; import org.jdbi.v3.sqlobject.statement.SqlQuery; @@ -106,6 +103,6 @@ public interface KeystoreDao { } default String truncate(String label) { - return (label != null && label.length() > 255 ? label.substring(0, 255) : label); + return (label != null && label.length() > Persistable.MAX_LABEL_LENGTH ? label.substring(0, Persistable.MAX_LABEL_LENGTH) : label); } } diff --git a/src/main/java/com/sparrowwallet/sparrow/io/db/WalletDao.java b/src/main/java/com/sparrowwallet/sparrow/io/db/WalletDao.java index 7175c640..ed00728b 100644 --- a/src/main/java/com/sparrowwallet/sparrow/io/db/WalletDao.java +++ b/src/main/java/com/sparrowwallet/sparrow/io/db/WalletDao.java @@ -154,6 +154,6 @@ public interface WalletDao { } default String truncate(String label) { - return (label != null && label.length() > 255 ? label.substring(0, 255) : label); + return (label != null && label.length() > Wallet.MAX_LABEL_LENGTH ? label.substring(0, Wallet.MAX_LABEL_LENGTH) : label); } } diff --git a/src/main/java/com/sparrowwallet/sparrow/io/db/WalletNodeDao.java b/src/main/java/com/sparrowwallet/sparrow/io/db/WalletNodeDao.java index ddcb6dbc..4af56fe9 100644 --- a/src/main/java/com/sparrowwallet/sparrow/io/db/WalletNodeDao.java +++ b/src/main/java/com/sparrowwallet/sparrow/io/db/WalletNodeDao.java @@ -121,6 +121,6 @@ public interface WalletNodeDao { } default String truncate(String label) { - return (label != null && label.length() > 255 ? label.substring(0, 255) : label); + return (label != null && label.length() > WalletNode.MAX_LABEL_LENGTH ? label.substring(0, WalletNode.MAX_LABEL_LENGTH) : label); } } diff --git a/src/main/java/com/sparrowwallet/sparrow/transaction/HeadersController.java b/src/main/java/com/sparrowwallet/sparrow/transaction/HeadersController.java index cf3cb7b4..2a7f2912 100644 --- a/src/main/java/com/sparrowwallet/sparrow/transaction/HeadersController.java +++ b/src/main/java/com/sparrowwallet/sparrow/transaction/HeadersController.java @@ -1599,7 +1599,7 @@ public class HeadersController extends TransactionFormController implements Init name += matcher.group(2); } } - blockTransaction.setLabel(name != null && name.length() > 255 ? name.substring(0, 255) : name); + blockTransaction.setLabel(name != null && name.length() > BlockTransaction.MAX_LABEL_LENGTH ? name.substring(0, BlockTransaction.MAX_LABEL_LENGTH) : name); changedLabelEntries.add(new TransactionEntry(event.getWallet(), blockTransaction, Collections.emptyMap(), Collections.emptyMap())); }