URI: 
       tchange 'new_transaction' notification to include wallet - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit a9197236a2a63014555c755e62b7495c1b809446
   DIR parent 2453872a09722a48c0f8540a292e195177e95db6
  HTML Author: SomberNight <somber.night@protonmail.com>
       Date:   Sun, 16 Sep 2018 02:48:13 +0200
       
       change 'new_transaction' notification to include wallet
       
       Diffstat:
         M electrum/gui/kivy/main_window.py    |       4 +++-
         M electrum/gui/qt/main_window.py      |      17 +++++++++--------
         M electrum/synchronizer.py            |       2 +-
       
       3 files changed, 13 insertions(+), 10 deletions(-)
       ---
   DIR diff --git a/electrum/gui/kivy/main_window.py b/electrum/gui/kivy/main_window.py
       t@@ -677,7 +677,9 @@ class ElectrumWindow(App):
                elif event == 'status':
                    self._trigger_update_status()
                elif event == 'new_transaction':
       -            self._trigger_update_wallet()
       +            wallet, tx = args
       +            if wallet == self.wallet:
       +                self._trigger_update_wallet()
                elif event == 'verified':
                    self._trigger_update_wallet()
        
   DIR diff --git a/electrum/gui/qt/main_window.py b/electrum/gui/qt/main_window.py
       t@@ -300,9 +300,9 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
                    self.gui_object.network_updated_signal_obj.network_updated_signal \
                        .emit(event, args)
                elif event == 'new_transaction':
       -            # FIXME maybe this event should also include which wallet
       -            # the tx is for. now all wallets get this.
       -            self.tx_notification_queue.put(args[0])
       +            wallet, tx = args
       +            if wallet == self.wallet:
       +                self.tx_notification_queue.put(tx)
                elif event in ['status', 'banner', 'verified', 'fee', 'fee_histogram']:
                    # Handle in GUI thread
                    self.network_signal.emit(event, args)
       t@@ -589,12 +589,13 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
        
            def notify_transactions(self):
                # note: during initial history sync for a wallet, many txns will be
       -        # received multiple times. hence the "total amount received" will be
       -        # a lot higher than should be. this is expected though not intended
       +        # received multiple times. hence the "total amount received" can be
       +        # a lot different than should be. this is expected though not intended
                if self.tx_notification_queue.qsize() == 0:
                    return
                now = time.time()
       -        if self.tx_notification_last_time + 5 > now:
       +        rate_limit = 20  # seconds
       +        if self.tx_notification_last_time + rate_limit > now:
                    return
                self.tx_notification_last_time = now
                self.print_error("Notifying GUI about new transactions")
       t@@ -609,14 +610,14 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
                    total_amount = 0
                    for tx in txns:
                        is_relevant, is_mine, v, fee = self.wallet.get_wallet_delta(tx)
       -                if v > 0:
       +                if is_relevant:
                            total_amount += v
                    self.notify(_("{} new transactions received: Total amount received in the new transactions {}")
                                .format(len(txns), self.format_amount_and_units(total_amount)))
                else:
                    for tx in txns:
                        is_relevant, is_mine, v, fee = self.wallet.get_wallet_delta(tx)
       -                if v > 0:
       +                if is_relevant:
                            self.notify(_("New transaction received: {}").format(self.format_amount_and_units(v)))
        
            def notify(self, message):
   DIR diff --git a/electrum/synchronizer.py b/electrum/synchronizer.py
       t@@ -134,7 +134,7 @@ class Synchronizer(PrintError):
                self.print_error("received tx %s height: %d bytes: %d" %
                                 (tx_hash, tx_height, len(tx.raw)))
                # callbacks
       -        self.wallet.network.trigger_callback('new_transaction', tx)
       +        self.wallet.network.trigger_callback('new_transaction', self.wallet, tx)
        
            async def subscribe_to_address(self, addr):
                h = address_to_scripthash(addr)