URI: 
       tfollow-up c66c54a (simplification) - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit 40fbf3a929abc040a4db675a69ae18427a647a4d
   DIR parent 305ca9064742d6bf6996d2757c1529fde30198e0
  HTML Author: ThomasV <thomasv@electrum.org>
       Date:   Sun,  6 Dec 2020 12:37:25 +0100
       
       follow-up c66c54a (simplification)
       
       Diffstat:
         M electrum/gui/kivy/main_window.py    |      41 +++++++++++--------------------
       
       1 file changed, 14 insertions(+), 27 deletions(-)
       ---
   DIR diff --git a/electrum/gui/kivy/main_window.py b/electrum/gui/kivy/main_window.py
       t@@ -192,40 +192,28 @@ class ElectrumWindow(App, Logger):
            def on_use_unconfirmed(self, instance, x):
                self.electrum_config.set_key('confirmed_only', not self.use_unconfirmed, True)
        
       +    def switch_to_send_screen(func):
       +        # try until send_screen is available
       +        def wrapper(self, *args):
       +            f = lambda dt: (bool(func(self, *args) and False) if self.send_screen else bool(self.switch_to('send') or True)) if self.wallet else True
       +            Clock.schedule_interval(f, 0.1)
       +        return wrapper
       +
       +    @switch_to_send_screen
            def set_URI(self, uri):
       -        self.switch_to('send')
                self.send_screen.set_URI(uri)
        
       +    @switch_to_send_screen
            def set_ln_invoice(self, invoice):
       -        self.switch_to('send')
                self.send_screen.set_ln_invoice(invoice)
        
            def on_new_intent(self, intent):
                data = str(intent.getDataString())
       -        if str(intent.getScheme()).lower() in ('bitcoin', 'lightning'):
       -            self._process_invoice_str(data)
       -
       -    _invoice_intent_queued = None  # type: Optional[str]
       -    def _process_invoice_str(self, invoice: str) -> None:
       -        if not self.wallet:
       -            self._invoice_intent_queued = invoice
       -            return
       -        if not self.send_screen:
       -            self.switch_to('send')
       -            self._invoice_intent_queued = invoice
       -            return
       -        if invoice.lower().startswith('bitcoin:'):
       -            self.set_URI(invoice)
       -        elif invoice.lower().startswith('lightning:'):
       -            self.set_ln_invoice(invoice)
       -
       -    def _maybe_process_queued_invoice(self, *dt):
       -        if not self.wallet:
       -            return
       -        invoice_queued = self._invoice_intent_queued
       -        if invoice_queued:
       -            self._invoice_intent_queued = None
       -            self._process_invoice_str(invoice_queued)
       +        scheme = str(intent.getScheme()).lower()
       +        if scheme == 'bitcoin':
       +            self.set_URI(data)
       +        elif scheme == 'lightning':
       +            self.set_ln_invoice(data)
        
            def on_language(self, instance, language):
                self.logger.info('language: {}'.format(language))
       t@@ -398,7 +386,6 @@ class ElectrumWindow(App, Logger):
                self._trigger_update_interfaces = Clock.create_trigger(self.update_interfaces, .5)
        
                self._periodic_update_status_during_sync = Clock.schedule_interval(self.update_wallet_synchronizing_progress, .5)
       -        self._periodic_process_queued_invoice = Clock.schedule_interval(self._maybe_process_queued_invoice, .5)
        
                # cached dialogs
                self._settings_dialog = None