From 8e3a3cefcf544aac0ffacadf773d1c850a9be5dc Mon Sep 17 00:00:00 2001 From: ThomasV Date: Tue, 4 Apr 2023 10:36:43 +0200 Subject: [PATCH] qt: do not mutate already saved invoice after editing amount. Also show empty an string for invoices that do not have an amount, similar to the requests list. --- electrum/gui/qt/invoice_list.py | 5 +++-- electrum/gui/qt/send_tab.py | 2 ++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/electrum/gui/qt/invoice_list.py b/electrum/gui/qt/invoice_list.py index 785a73f9d..3e641e2fe 100644 --- a/electrum/gui/qt/invoice_list.py +++ b/electrum/gui/qt/invoice_list.py @@ -119,11 +119,12 @@ class InvoiceList(MyTreeView): icon_name = 'seal.png' status = self.wallet.get_invoice_status(item) amount = item.get_amount_sat() + amount_str = self.main_window.format_amount(amount, whitespaces=True) if amount else "" timestamp = item.time or 0 labels = [""] * len(self.Columns) labels[self.Columns.DATE] = format_time(timestamp) if timestamp else _('Unknown') labels[self.Columns.DESCRIPTION] = item.message - labels[self.Columns.AMOUNT] = self.main_window.format_amount(amount, whitespaces=True) + labels[self.Columns.AMOUNT] = amount_str labels[self.Columns.STATUS] = item.get_status_str(status) items = [QStandardItem(e) for e in labels] self.set_editability(items) @@ -182,7 +183,7 @@ class InvoiceList(MyTreeView): if bool(invoice.get_amount_sat()): menu.addAction(_("Pay") + "...", lambda: self.send_tab.do_pay_invoice(invoice)) else: - menu.addAction(_("Edit amount") + "...", lambda: self.send_tab.do_edit_invoice(invoice)) + menu.addAction(_("Pay") + "...", lambda: self.send_tab.do_edit_invoice(invoice)) if status == PR_FAILED: menu.addAction(_("Retry"), lambda: self.send_tab.do_pay_invoice(invoice)) if self.wallet.lnworker: diff --git a/electrum/gui/qt/send_tab.py b/electrum/gui/qt/send_tab.py index cec6b6144..825c9aa69 100644 --- a/electrum/gui/qt/send_tab.py +++ b/electrum/gui/qt/send_tab.py @@ -585,6 +585,8 @@ class SendTab(QWidget, MessageBoxMixin, Logger): text = invoice.lightning_invoice if invoice.is_lightning() else invoice.get_address() self.payto_e._on_input_btn(text) self.amount_e.setFocus() + # disable save button, because it would create a new invoice + self.save_button.setEnabled(False) def do_pay_invoice(self, invoice: 'Invoice'): if not bool(invoice.get_amount_sat()):