electrum

Electrum Bitcoin wallet
git clone https://git.parazyd.org/electrum
Log | Files | Refs | Submodules

commit 3835157f419d0f0139ed05a589c6a10b3f1a7e99
parent dbceed26474ba4a1ef7da22cd0fa0e5fde8e6a3c
Author: SomberNight <somber.night@protonmail.com>
Date:   Tue,  4 Feb 2020 17:56:52 +0100

cli: history commands: only json-encode once

closes #5868
closes #5931

Diffstat:
Melectrum/commands.py | 12++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/electrum/commands.py b/electrum/commands.py @@ -73,6 +73,14 @@ def satoshis(amount): return int(COIN*Decimal(amount)) if amount not in ['!', None] else amount +def json_normalize(x): + # note: The return value of commands, when going through the JSON-RPC interface, + # is json-encoded. The encoder used there cannot handle some types, e.g. electrum.util.Satoshis. + # note: We should not simply do "json_encode(x)" here, as then later x would get doubly json-encoded. + # see #5868 + return json_decode(json_encode(x)) + + class Command: def __init__(self, func, s): self.name = func.__name__ @@ -638,7 +646,7 @@ class Commands: from .exchange_rate import FxThread fx = FxThread(self.config, None) kwargs['fx'] = fx - return json_encode(wallet.get_detailed_history(**kwargs)) + return json_normalize(wallet.get_detailed_history(**kwargs)) @command('w') async def init_lightning(self, wallet: Abstract_Wallet = None): @@ -655,7 +663,7 @@ class Commands: async def lightning_history(self, show_fiat=False, wallet: Abstract_Wallet = None): """ lightning history """ lightning_history = wallet.lnworker.get_history() if wallet.lnworker else [] - return json_encode(lightning_history) + return json_normalize(lightning_history) @command('w') async def setlabel(self, key, label, wallet: Abstract_Wallet = None):