URI: 
       tlightning: connect send button - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit 34d5f1b2e3ccd49b293f345ea5e013a6480701c5
   DIR parent 12d3877873128fa3872070a3df5be5501e2fd871
  HTML Author: ThomasV <thomasv@electrum.org>
       Date:   Thu, 31 May 2018 14:05:09 +0200
       
       lightning: connect send button
       
       Diffstat:
         M electrum/commands.py                |       3 ++-
         M electrum/gui/qt/main_window.py      |      11 ++++++++++-
         M electrum/gui/qt/paytoedit.py        |       2 ++
         M lib/lnworker.py                     |       2 +-
       
       4 files changed, 15 insertions(+), 3 deletions(-)
       ---
   DIR diff --git a/electrum/commands.py b/electrum/commands.py
       t@@ -774,7 +774,8 @@ class Commands:
        
            @command('wn')
            def lnpay(self, invoice):
       -        self.wallet.lnworker.pay(invoice)
       +        f = self.wallet.lnworker.pay(invoice)
       +        return f.result()
        
            @command('wn')
            def addinvoice(self, requested_amount, message):
   DIR diff --git a/electrum/gui/qt/main_window.py b/electrum/gui/qt/main_window.py
       t@@ -1648,7 +1648,15 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, Logger):
            def do_preview(self):
                self.do_send(preview = True)
        
       +    def pay_lightning_invoice(self, invoice):
       +        f = self.wallet.lnworker.pay(invoice)
       +        self.do_clear()
       +
            def do_send(self, preview = False):
       +        if self.payto_e.is_lightning:
       +            self.pay_lightning_invoice(self.payto_e.lightning_invoice)
       +            return
       +        #
                if run_hook('abort_send', self):
                    return
                outputs, fee_estimator, tx_desc, coins = self.read_send_tab()
       t@@ -1875,11 +1883,11 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, Logger):
                else:
                     description = ''
                self.payto_e.setFrozen(True)
       -        self.payto_e.setGreen()
                self.payto_e.setText(pubkey)
                self.message_e.setText(description)
                self.amount_e.setAmount(lnaddr.amount)
                #self.amount_e.textEdited.emit("")
       +        self.payto_e.is_lightning = True
        
            def pay_to_URI(self, URI):
                if not URI:
       t@@ -1917,6 +1925,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, Logger):
                self.not_enough_funds = False
                self.payment_request = None
                self.payto_e.is_pr = False
       +        self.payto_e.is_lightning = False
                for e in [self.payto_e, self.message_e, self.amount_e, self.fiat_send_e,
                          self.fee_e, self.feerate_e]:
                    e.setText('')
   DIR diff --git a/electrum/gui/qt/paytoedit.py b/electrum/gui/qt/paytoedit.py
       t@@ -61,6 +61,7 @@ class PayToEdit(CompletionTextEdit, ScanQRTextEdit, Logger):
                self.errors = []
                self.is_pr = False
                self.is_alias = False
       +        self.is_lightning = False
                self.update_size()
                self.payto_address = None
                self.previous_payto = ''
       t@@ -132,6 +133,7 @@ class PayToEdit(CompletionTextEdit, ScanQRTextEdit, Logger):
                        return
                    if data.startswith("ln"):
                        self.win.parse_lightning_invoice(data)
       +                self.lightning_invoice = data
                        return
                    try:
                        self.payto_address = self.parse_output(data)
   DIR diff --git a/lib/lnworker.py b/lib/lnworker.py
       t@@ -193,7 +193,7 @@ class LNWorker(PrintError):
        
            def pay(self, invoice):
                coro = self._pay_coroutine(invoice)
       -        return asyncio.run_coroutine_threadsafe(coro, self.network.asyncio_loop).result()
       +        return asyncio.run_coroutine_threadsafe(coro, self.network.asyncio_loop)
        
            # not aiosafe because we call .result() which will propagate an exception
            async def _pay_coroutine(self, invoice):