mirror of
https://github.com/sparrowwallet/sparrow.git
synced 2024-12-24 20:56:45 +00:00
notifications preference
This commit is contained in:
parent
08498b1b71
commit
8aed206a34
4 changed files with 48 additions and 22 deletions
|
@ -926,30 +926,32 @@ public class AppController implements Initializable {
|
||||||
|
|
||||||
@Subscribe
|
@Subscribe
|
||||||
public void newWalletTransactions(NewWalletTransactionsEvent event) {
|
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();
|
BitcoinUnit unit = Config.get().getBitcoinUnit();
|
||||||
if(unit == null || unit.equals(BitcoinUnit.AUTO)) {
|
if(unit == null || unit.equals(BitcoinUnit.AUTO)) {
|
||||||
unit = (event.getTotalValue() >= BitcoinUnit.getAutoThreshold() ? BitcoinUnit.BTC : BitcoinUnit.SATOSHIS);
|
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";
|
||||||
|
}
|
||||||
|
|
||||||
|
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();
|
||||||
}
|
}
|
||||||
|
|
||||||
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();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Subscribe
|
@Subscribe
|
||||||
|
|
|
@ -21,6 +21,7 @@ public class Config {
|
||||||
private ExchangeSource exchangeSource;
|
private ExchangeSource exchangeSource;
|
||||||
private boolean groupByAddress = true;
|
private boolean groupByAddress = true;
|
||||||
private boolean includeMempoolChange = true;
|
private boolean includeMempoolChange = true;
|
||||||
|
private boolean notifyNewTransactions = true;
|
||||||
private Integer keyDerivationPeriod;
|
private Integer keyDerivationPeriod;
|
||||||
private File hwi;
|
private File hwi;
|
||||||
private String electrumServer;
|
private String electrumServer;
|
||||||
|
@ -123,6 +124,15 @@ public class Config {
|
||||||
flush();
|
flush();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isNotifyNewTransactions() {
|
||||||
|
return notifyNewTransactions;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNotifyNewTransactions(boolean notifyNewTransactions) {
|
||||||
|
this.notifyNewTransactions = notifyNewTransactions;
|
||||||
|
flush();
|
||||||
|
}
|
||||||
|
|
||||||
public Integer getKeyDerivationPeriod() {
|
public Integer getKeyDerivationPeriod() {
|
||||||
return keyDerivationPeriod;
|
return keyDerivationPeriod;
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,6 +35,9 @@ public class GeneralPreferencesController extends PreferencesDetailController {
|
||||||
@FXML
|
@FXML
|
||||||
private UnlabeledToggleSwitch includeMempoolChange;
|
private UnlabeledToggleSwitch includeMempoolChange;
|
||||||
|
|
||||||
|
@FXML
|
||||||
|
private UnlabeledToggleSwitch notifyNewTransactions;
|
||||||
|
|
||||||
private final ChangeListener<Currency> fiatCurrencyListener = new ChangeListener<Currency>() {
|
private final ChangeListener<Currency> fiatCurrencyListener = new ChangeListener<Currency>() {
|
||||||
@Override
|
@Override
|
||||||
public void changed(ObservableValue<? extends Currency> observable, Currency oldValue, Currency newValue) {
|
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) -> {
|
includeMempoolChange.selectedProperty().addListener((observableValue, oldValue, newValue) -> {
|
||||||
config.setIncludeMempoolChange(newValue);
|
config.setIncludeMempoolChange(newValue);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
notifyNewTransactions.setSelected(config.isNotifyNewTransactions());
|
||||||
|
notifyNewTransactions.selectedProperty().addListener((observableValue, oldValue, newValue) -> {
|
||||||
|
config.setNotifyNewTransactions(newValue);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateCurrencies(ExchangeSource exchangeSource) {
|
private void updateCurrencies(ExchangeSource exchangeSource) {
|
||||||
|
|
|
@ -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"/>
|
<HelpLabel helpText="Allow a wallet to spend UTXOs that are still in the mempool where all their inputs are from that wallet"/>
|
||||||
</Field>
|
</Field>
|
||||||
</Fieldset>
|
</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>
|
</Form>
|
||||||
</GridPane>
|
</GridPane>
|
||||||
|
|
Loading…
Reference in a new issue