payment_identifier: return onchain invoice when GUI requests MAX amount (fixes #8900)
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user