diff --git a/electrum/gui/qt/send_tab.py b/electrum/gui/qt/send_tab.py index 8625947e8..4fbd4745c 100644 --- a/electrum/gui/qt/send_tab.py +++ b/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 diff --git a/electrum/payment_identifier.py b/electrum/payment_identifier.py index ce8698532..815a736d5 100644 --- a/electrum/payment_identifier.py +++ b/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