Browse Source

Merge #567: Implement BIP21 in GUI

a539345be3 Implement BIP21 in GUI (Kristaps Kaupe)

Pull request description:

  Allows pasting BIP21 URI in address field for single sends. See https://github.com/JoinMarket-Org/joinmarket-clientserver/pull/560#issuecomment-622920476. Also added stripping address field input of extra whitespace at beginning / end. <del>Change with `raise ValueError` in `decode_bip21_uri()` is needed because `amount_str` can be invalid and that raised `decimal.InvalidOperation` on `amount_to_sat()` call.</del><ins>(UPDATE - that one is already merged in with #568)</ins>

Top commit has no ACKs.

Tree-SHA512: 079ca866cc0cded1624531ad6397fcdeeb7ebed7c6eab778e8640561387a3c08e39be2dc137df785f3aae2ad1b4a56b636d1f304ef854da27cf651293d78266f
master
Kristaps Kaupe 6 years ago
parent
commit
01d8857bd9
No known key found for this signature in database
GPG Key ID: D47B1B4232B55437
  1. 20
      scripts/joinmarket-qt.py

20
scripts/joinmarket-qt.py

@ -103,6 +103,21 @@ def update_config_for_gui():
jm_single().config.set("GUI", gcn, gcv)
def checkAddress(parent, addr):
addr = addr.strip()
if btc.is_bip21_uri(addr):
try:
parsed = btc.decode_bip21_uri(addr)
except ValueError as e:
JMQtMessageBox(parent,
"Bitcoin URI not valid.\n" + str(e),
mbtype='warn',
title="Error")
return
addr = parsed['address']
if 'amount' in parsed:
parent.widgets[3][1].setText(
str(btc.sat_to_btc(parsed['amount'])))
parent.widgets[0][1].setText(addr)
valid, errmsg = validate_address(str(addr))
if not valid:
JMQtMessageBox(parent,
@ -625,7 +640,7 @@ class SpendTab(QWidget):
log.info("Cannot start join, already running.")
if not self.validateSettings():
return
destaddr = str(self.widgets[0][1].text())
destaddr = str(self.widgets[0][1].text()).strip()
makercount = int(self.widgets[1][1].text())
mixdepth = int(self.widgets[2][1].text())
btc_amount_str = self.widgets[3][1].text()
@ -961,7 +976,8 @@ class SpendTab(QWidget):
self.tumbler_destaddrs = None
def validateSettings(self):
valid, errmsg = validate_address(str(self.widgets[0][1].text()))
valid, errmsg = validate_address(str(
self.widgets[0][1].text().strip()))
if not valid:
JMQtMessageBox(self, errmsg, mbtype='warn', title="Error")
return False

Loading…
Cancel
Save