Browse Source

notifications preference

bwt
Craig Raw 4 years ago
parent
commit
8aed206a34
  1. 44
      src/main/java/com/sparrowwallet/sparrow/AppController.java
  2. 10
      src/main/java/com/sparrowwallet/sparrow/io/Config.java
  3. 8
      src/main/java/com/sparrowwallet/sparrow/preferences/GeneralPreferencesController.java
  4. 6
      src/main/resources/com/sparrowwallet/sparrow/preferences/general.fxml

44
src/main/java/com/sparrowwallet/sparrow/AppController.java

@ -926,30 +926,32 @@ public class AppController implements Initializable {
@Subscribe
public void newWalletTransactions(NewWalletTransactionsEvent event) {
String text = "New " + (event.getBlockTransactions().size() > 1 ? "transactions: " : "transaction: ");
if(Config.get().isNotifyNewTransactions()) {
String text = "New " + (event.getBlockTransactions().size() > 1 ? "transactions: " : "transaction: ");
BitcoinUnit unit = Config.get().getBitcoinUnit();
if(unit == null || unit.equals(BitcoinUnit.AUTO)) {
unit = (event.getTotalValue() >= BitcoinUnit.getAutoThreshold() ? BitcoinUnit.BTC : BitcoinUnit.SATOSHIS);
}
BitcoinUnit unit = Config.get().getBitcoinUnit();
if(unit == null || unit.equals(BitcoinUnit.AUTO)) {
unit = (event.getTotalValue() >= BitcoinUnit.getAutoThreshold() ? BitcoinUnit.BTC : BitcoinUnit.SATOSHIS);
}
if(unit == BitcoinUnit.BTC) {
text += CoinLabel.getBTCFormat().format((double)event.getTotalValue() / Transaction.SATOSHIS_PER_BITCOIN) + " BTC";
} else {
text += String.format(Locale.ENGLISH, "%,d", event.getTotalValue()) + " sats";
}
if(unit == BitcoinUnit.BTC) {
text += CoinLabel.getBTCFormat().format((double)event.getTotalValue() / Transaction.SATOSHIS_PER_BITCOIN) + " BTC";
} else {
text += String.format(Locale.ENGLISH, "%,d", event.getTotalValue()) + " sats";
}
Image image = new Image("image/sparrow-small.png", 50, 50, false, false);
Notifications notificationBuilder = Notifications.create()
.title("Sparrow - " + event.getWallet().getName())
.text(text)
.graphic(new ImageView(image))
.hideAfter(Duration.seconds(180))
.position(Pos.TOP_RIGHT)
.threshold(5, Notifications.create().title("Sparrow").text("Multiple new wallet transactions").graphic(new ImageView(image)))
.onAction(e -> selectTab(event.getWallet()));
notificationBuilder.show();
Image image = new Image("image/sparrow-small.png", 50, 50, false, false);
Notifications notificationBuilder = Notifications.create()
.title("Sparrow - " + event.getWallet().getName())
.text(text)
.graphic(new ImageView(image))
.hideAfter(Duration.seconds(180))
.position(Pos.TOP_RIGHT)
.threshold(5, Notifications.create().title("Sparrow").text("Multiple new wallet transactions").graphic(new ImageView(image)))
.onAction(e -> selectTab(event.getWallet()));
notificationBuilder.show();
}
}
@Subscribe

10
src/main/java/com/sparrowwallet/sparrow/io/Config.java

@ -21,6 +21,7 @@ public class Config {
private ExchangeSource exchangeSource;
private boolean groupByAddress = true;
private boolean includeMempoolChange = true;
private boolean notifyNewTransactions = true;
private Integer keyDerivationPeriod;
private File hwi;
private String electrumServer;
@ -123,6 +124,15 @@ public class Config {
flush();
}
public boolean isNotifyNewTransactions() {
return notifyNewTransactions;
}
public void setNotifyNewTransactions(boolean notifyNewTransactions) {
this.notifyNewTransactions = notifyNewTransactions;
flush();
}
public Integer getKeyDerivationPeriod() {
return keyDerivationPeriod;
}

8
src/main/java/com/sparrowwallet/sparrow/preferences/GeneralPreferencesController.java

@ -35,6 +35,9 @@ public class GeneralPreferencesController extends PreferencesDetailController {
@FXML
private UnlabeledToggleSwitch includeMempoolChange;
@FXML
private UnlabeledToggleSwitch notifyNewTransactions;
private final ChangeListener<Currency> fiatCurrencyListener = new ChangeListener<Currency>() {
@Override
public void changed(ObservableValue<? extends Currency> observable, Currency oldValue, Currency newValue) {
@ -78,6 +81,11 @@ public class GeneralPreferencesController extends PreferencesDetailController {
includeMempoolChange.selectedProperty().addListener((observableValue, oldValue, newValue) -> {
config.setIncludeMempoolChange(newValue);
});
notifyNewTransactions.setSelected(config.isNotifyNewTransactions());
notifyNewTransactions.selectedProperty().addListener((observableValue, oldValue, newValue) -> {
config.setNotifyNewTransactions(newValue);
});
}
private void updateCurrencies(ExchangeSource exchangeSource) {

6
src/main/resources/com/sparrowwallet/sparrow/preferences/general.fxml

@ -68,5 +68,11 @@
<HelpLabel helpText="Allow a wallet to spend UTXOs that are still in the mempool where all their inputs are from that wallet"/>
</Field>
</Fieldset>
<Fieldset inputGrow="SOMETIMES" text="Notifications" styleClass="wideLabelFieldSet">
<Field text="New transactions:">
<UnlabeledToggleSwitch fx:id="notifyNewTransactions" />
<HelpLabel helpText="Show system notifications on new wallet transactions"/>
</Field>
</Fieldset>
</Form>
</GridPane>

Loading…
Cancel
Save