qt send tab: (regression) fix handling multiline fmt for single line
fixes #6761
This commit is contained in:
@@ -73,7 +73,7 @@ class PayToEdit(CompletionTextEdit, ScanQRTextEdit, Logger):
|
||||
self.c = None
|
||||
self.textChanged.connect(self.check_text)
|
||||
self.outputs = [] # type: List[PartialTxOutput]
|
||||
self.errors = [] # type: Sequence[PayToLineError]
|
||||
self.errors = [] # type: List[PayToLineError]
|
||||
self.is_pr = False
|
||||
self.is_alias = False
|
||||
self.update_size()
|
||||
@@ -145,15 +145,18 @@ class PayToEdit(CompletionTextEdit, ScanQRTextEdit, Logger):
|
||||
return
|
||||
# filter out empty lines
|
||||
lines = [i for i in self.lines() if i]
|
||||
outputs = [] # type: List[PartialTxOutput]
|
||||
total = 0
|
||||
|
||||
self.payto_scriptpubkey = None
|
||||
self.lightning_invoice = None
|
||||
self.outputs = []
|
||||
|
||||
if len(lines) == 1:
|
||||
data = lines[0]
|
||||
# try bip21 URI
|
||||
if data.startswith("bitcoin:"):
|
||||
self.win.pay_to_URI(data)
|
||||
return
|
||||
# try LN invoice
|
||||
bolt11_invoice = maybe_extract_bolt11_invoice(data)
|
||||
if bolt11_invoice is not None:
|
||||
try:
|
||||
@@ -163,24 +166,40 @@ class PayToEdit(CompletionTextEdit, ScanQRTextEdit, Logger):
|
||||
else:
|
||||
self.lightning_invoice = bolt11_invoice
|
||||
return
|
||||
# try "address, amount" on-chain format
|
||||
try:
|
||||
self._parse_as_multiline(lines, raise_errors=True)
|
||||
except Exception as e:
|
||||
pass
|
||||
else:
|
||||
return
|
||||
# try address/script
|
||||
try:
|
||||
self.payto_scriptpubkey = self.parse_output(data)
|
||||
except Exception as e:
|
||||
self.errors.append(PayToLineError(line_content=data, exc=e))
|
||||
if self.payto_scriptpubkey:
|
||||
else:
|
||||
self.win.set_onchain(True)
|
||||
self.win.lock_amount(False)
|
||||
return
|
||||
return
|
||||
else:
|
||||
# there are multiple lines
|
||||
self._parse_as_multiline(lines, raise_errors=False)
|
||||
|
||||
# there are multiple lines
|
||||
def _parse_as_multiline(self, lines, *, raise_errors: bool):
|
||||
outputs = [] # type: List[PartialTxOutput]
|
||||
total = 0
|
||||
is_max = False
|
||||
for i, line in enumerate(lines):
|
||||
try:
|
||||
output = self.parse_address_and_amount(line)
|
||||
except Exception as e:
|
||||
self.errors.append(PayToLineError(
|
||||
idx=i, line_content=line.strip(), exc=e, is_multiline=True))
|
||||
continue
|
||||
if raise_errors:
|
||||
raise
|
||||
else:
|
||||
self.errors.append(PayToLineError(
|
||||
idx=i, line_content=line.strip(), exc=e, is_multiline=True))
|
||||
continue
|
||||
outputs.append(output)
|
||||
if output.value == '!':
|
||||
is_max = True
|
||||
|
||||
Reference in New Issue
Block a user