mirror of
https://github.com/sparrowwallet/sparrow.git
synced 2025-11-05 11:56:37 +00:00
improve implementation of adding dns payment information from psbt
This commit is contained in:
parent
9e33861110
commit
cca9ab1056
1 changed files with 25 additions and 26 deletions
|
|
@ -1924,34 +1924,33 @@ public class AppController implements Initializable {
|
|||
|
||||
//Add DNS payment information if not already cached
|
||||
for(PSBTOutput psbtOutput : psbt.getPsbtOutputs()) {
|
||||
if(psbtOutput.getDnssecProof() != null && !psbtOutput.getDnssecProof().isEmpty() && psbtOutput.getScript() != null) {
|
||||
Address address = psbtOutput.getScript().getToAddress();
|
||||
if(address != null) {
|
||||
Optional<SilentPaymentAddress> optSilentPaymentAddress = AppServices.get().getOpenWallets().keySet().stream()
|
||||
.map(wallet -> wallet.getSilentPaymentAddress(address)).filter(Objects::nonNull).findFirst();
|
||||
optSilentPaymentAddress.ifPresentOrElse(silentPaymentAddress -> {
|
||||
if(DnsPaymentCache.getDnsPayment(silentPaymentAddress) == null) {
|
||||
if(psbtOutput.getDnssecProof() != null && !psbtOutput.getDnssecProof().isEmpty()) {
|
||||
Address address = psbtOutput.getScript() != null ? psbtOutput.getScript().getToAddress() : null;
|
||||
if(address != null && DnsPaymentCache.getDnsPayment(address) == null) {
|
||||
try {
|
||||
Optional<DnsPayment> optDnsPayment = psbtOutput.getDnsPayment();
|
||||
if(optDnsPayment.isPresent() && optDnsPayment.get().hasSilentPaymentAddress()) {
|
||||
DnsPaymentCache.putDnsPayment(silentPaymentAddress, optDnsPayment.get());
|
||||
}
|
||||
} catch(Exception e) {
|
||||
log.debug("Error resolving DNS payment", e);
|
||||
}
|
||||
}
|
||||
}, () -> {
|
||||
if(DnsPaymentCache.getDnsPayment(address) == null) {
|
||||
try {
|
||||
Optional<DnsPayment> optDnsPayment = psbtOutput.getDnsPayment();
|
||||
if(optDnsPayment.isPresent() && optDnsPayment.get().hasAddress()) {
|
||||
if(optDnsPayment.isPresent() && address.equals(optDnsPayment.get().bitcoinURI().getAddress())) {
|
||||
DnsPaymentCache.putDnsPayment(address, optDnsPayment.get());
|
||||
}
|
||||
} catch(Exception e) {
|
||||
log.debug("Error resolving DNS payment", e);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
SilentPaymentAddress silentPaymentAddress = psbtOutput.getSilentPaymentAddress();
|
||||
if(address != null && silentPaymentAddress == null) {
|
||||
silentPaymentAddress = AppServices.get().getOpenWallets().keySet().stream()
|
||||
.map(wallet -> wallet.getSilentPaymentAddress(address)).filter(Objects::nonNull).findFirst().orElse(null);
|
||||
}
|
||||
if(silentPaymentAddress != null && DnsPaymentCache.getDnsPayment(silentPaymentAddress) == null) {
|
||||
try {
|
||||
Optional<DnsPayment> optDnsPayment = psbtOutput.getDnsPayment();
|
||||
if(optDnsPayment.isPresent() && silentPaymentAddress.equals(optDnsPayment.get().bitcoinURI().getSilentPaymentAddress())) {
|
||||
DnsPaymentCache.putDnsPayment(silentPaymentAddress, optDnsPayment.get());
|
||||
}
|
||||
} catch(Exception e) {
|
||||
log.debug("Error resolving DNS payment", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue