Browse Source

payment_identifier: return onchain invoice when GUI requests MAX amount (fixes #8900)

master
Sander van Grieken 2 years ago
parent
commit
ef87fbd3e5
No known key found for this signature in database
GPG Key ID: 9BCF8209EA402EBA
  1. 4
      electrum/gui/qt/send_tab.py
  2. 6
      electrum/payment_identifier.py

4
electrum/gui/qt/send_tab.py

@ -3,7 +3,7 @@
# file LICENCE or http://www.opensource.org/licenses/mit-license.php
from decimal import Decimal
from typing import Optional, TYPE_CHECKING, Sequence, List, Callable
from typing import Optional, TYPE_CHECKING, Sequence, List, Callable, Union
from PyQt5.QtCore import pyqtSignal, QPoint, QSize, Qt
from PyQt5.QtWidgets import (QLabel, QVBoxLayout, QGridLayout, QHBoxLayout,
QWidget, QToolTip, QPushButton, QApplication)
@ -600,7 +600,7 @@ class SendTab(QWidget, MessageBoxMixin, Logger):
else:
self.pay_onchain_dialog(invoice.outputs, invoice=invoice)
def read_amount(self) -> List[PartialTxOutput]:
def read_amount(self) -> Union[int, str]:
amount = '!' if self.max_button.isChecked() else self.get_amount()
return amount

6
electrum/payment_identifier.py

@ -675,11 +675,13 @@ class PaymentIdentifier(Logger):
def invoice_from_payment_identifier(
pi: 'PaymentIdentifier',
wallet: 'Abstract_Wallet',
amount_sat: int,
amount_sat: Union[int, str],
message: str = None
) -> Optional[Invoice]:
assert pi.state in [PaymentIdentifierState.AVAILABLE, PaymentIdentifierState.MERCHANT_NOTIFY]
if pi.is_lightning():
assert pi.is_onchain() if amount_sat == '!' else True # MAX should only be allowed if pi has onchain destination
if pi.is_lightning() and not amount_sat == '!':
invoice = pi.bolt11
if not invoice:
return

Loading…
Cancel
Save