tWhen using labels plugin write wallet once - electrum - Electrum Bitcoin wallet HTML git clone https://git.parazyd.org/electrum DIR Log DIR Files DIR Refs DIR Submodules --- DIR commit f710d872c73497006803b625d1d98d566895b1c3 DIR parent a735fbabe0b5b77e8b783ee6ed8da457ff6fbd00 HTML Author: Neil Booth <kyuupichan@gmail.com> Date: Thu, 10 Sep 2015 22:27:50 +0900 When using labels plugin write wallet once Poor hook coupling would cause the wallet to be written ttwice unnecessarily when using the labels plugin and changing a label Diffstat: M lib/wallet.py | 4 +--- M plugins/labels.py | 11 ++++++----- 2 files changed, 7 insertions(+), 8 deletions(-) --- DIR diff --git a/lib/wallet.py b/lib/wallet.py t@@ -40,8 +40,6 @@ from mnemonic import Mnemonic import paymentrequest - - # internal ID for imported account IMPORTED_ACCOUNT = '/x' t@@ -365,9 +363,9 @@ class Abstract_Wallet(PrintError): changed = True if changed: + run_hook('set_label', self, name, text) self.storage.put('labels', self.labels, True) - run_hook('set_label', self, name, text, changed) return changed def addresses(self, include_change = True): DIR diff --git a/plugins/labels.py b/plugins/labels.py t@@ -76,16 +76,16 @@ class Plugin(BasePlugin): self.set_nonce(wallet, nonce) return nonce - def set_nonce(self, wallet, nonce): + def set_nonce(self, wallet, nonce, force_write=True): self.print_error("set", wallet.basename(), "nonce to", nonce) - wallet.storage.put("wallet_nonce", nonce, True) + wallet.storage.put("wallet_nonce", nonce, force_write) def requires_settings(self): return True @hook - def set_label(self, wallet, item, label, changed): - if not changed or not wallet in self.wallets: + def set_label(self, wallet, item, label): + if not wallet in self.wallets: return nonce = self.get_nonce(wallet) wallet_id = self.wallets[wallet][2] t@@ -97,7 +97,8 @@ class Plugin(BasePlugin): args=["POST", "/label", False, bundle]) t.setDaemon(True) t.start() - self.set_nonce(wallet, nonce + 1) + # Caller will write the wallet + self.set_nonce(wallet, nonce + 1, force_write=False) def settings_widget(self, window): return EnterButton(_('Settings'),