From 9ddb6755504830402447599b9010a54e4b3fc287 Mon Sep 17 00:00:00 2001 From: ThomasV Date: Wed, 9 Dec 2020 10:04:17 +0100 Subject: [PATCH] kivy: handle lightning invoices on wallets that do not have lightning. fix #6371 --- electrum/gui/kivy/uix/dialogs/invoice_dialog.py | 2 +- electrum/gui/kivy/uix/screens.py | 13 ++++++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/electrum/gui/kivy/uix/dialogs/invoice_dialog.py b/electrum/gui/kivy/uix/dialogs/invoice_dialog.py index f8b80c46b..98051066f 100644 --- a/electrum/gui/kivy/uix/dialogs/invoice_dialog.py +++ b/electrum/gui/kivy/uix/dialogs/invoice_dialog.py @@ -98,7 +98,7 @@ class InvoiceDialog(Factory.Popup): self.description = invoice.message self.is_lightning = invoice.is_lightning() self.update_status() - self.log = self.app.wallet.lnworker.logs[self.key] if self.is_lightning else [] + self.log = self.app.wallet.lnworker.logs[self.key] if self.is_lightning and self.app.wallet.lnworker else [] def update_status(self): invoice = self.app.wallet.get_invoice(self.key) diff --git a/electrum/gui/kivy/uix/screens.py b/electrum/gui/kivy/uix/screens.py index bfbb49acc..5772721f9 100644 --- a/electrum/gui/kivy/uix/screens.py +++ b/electrum/gui/kivy/uix/screens.py @@ -233,9 +233,10 @@ class SendScreen(CScreen, Logger): assert isinstance(item, LNInvoice) key = item.rhash address = key - log = self.app.wallet.lnworker.logs.get(key) - if status == PR_INFLIGHT and log: - status_str += '... (%d)'%len(log) + if self.app.wallet.lnworker: + log = self.app.wallet.lnworker.logs.get(key) + if status == PR_INFLIGHT and log: + status_str += '... (%d)'%len(log) is_bip70 = False else: assert isinstance(item, OnchainInvoice) @@ -345,8 +346,10 @@ class SendScreen(CScreen, Logger): def do_pay_invoice(self, invoice): if invoice.is_lightning(): - self.app.protected(_('Pay lightning invoice?'), self._do_pay_lightning, (invoice,)) - return + if self.app.wallet.lnworker: + self.app.protected(_('Pay lightning invoice?'), self._do_pay_lightning, (invoice,)) + else: + self.app.show_error(_("Lightning payments are not available for this wallet")) else: do_pay = lambda rbf: self._do_pay_onchain(invoice, rbf) if self.app.electrum_config.get('use_rbf'):