From 3fc927f742c1217cbfdffcb6306fedcf173050c7 Mon Sep 17 00:00:00 2001 From: Godwin Asuquo <41484542+godilite@users.noreply.github.com> Date: Thu, 20 Apr 2023 23:20:37 +0300 Subject: [PATCH] CW-289-Fix bitcoin pending send receive transactions not showing until confirmed (#878) * Fix error in rendering pending transactions in different device * Show pending status * Fix broken subscription stream --- cw_bitcoin/lib/electrum.dart | 10 ++++++---- cw_bitcoin/lib/electrum_transaction_info.dart | 2 +- cw_bitcoin/lib/electrum_wallet.dart | 4 ++-- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/cw_bitcoin/lib/electrum.dart b/cw_bitcoin/lib/electrum.dart index d50f280f6..81f2da161 100644 --- a/cw_bitcoin/lib/electrum.dart +++ b/cw_bitcoin/lib/electrum.dart @@ -410,7 +410,7 @@ class ElectrumClient { switch (method) { case 'blockchain.scripthash.subscribe': final params = request['params'] as List; - final scripthash = params.first as String; + final scripthash = params.first as String?; final id = 'blockchain.scripthash.subscribe:$scripthash'; _tasks[id]?.subject?.add(params.last); @@ -430,15 +430,17 @@ class ElectrumClient { void _handleResponse(Map response) { final method = response['method']; - final id = response['id'] as String; + final id = response['id'] as String?; final result = response['result']; if (method is String) { _methodHandler(method: method, request: response); return; } - - _finish(id, result); + + if (id != null){ + _finish(id, result); + } } } diff --git a/cw_bitcoin/lib/electrum_transaction_info.dart b/cw_bitcoin/lib/electrum_transaction_info.dart index 8d6ef0fea..b034c06b1 100644 --- a/cw_bitcoin/lib/electrum_transaction_info.dart +++ b/cw_bitcoin/lib/electrum_transaction_info.dart @@ -136,7 +136,7 @@ class ElectrumTransactionInfo extends TransactionInfo { return ElectrumTransactionInfo(type, id: bundle.originalTransaction.getId(), height: height, - isPending: false, + isPending: bundle.confirmations == 0, fee: fee, direction: direction, amount: amount, diff --git a/cw_bitcoin/lib/electrum_wallet.dart b/cw_bitcoin/lib/electrum_wallet.dart index 4984ad28e..eac05378f 100644 --- a/cw_bitcoin/lib/electrum_wallet.dart +++ b/cw_bitcoin/lib/electrum_wallet.dart @@ -537,8 +537,8 @@ abstract class ElectrumWalletBase extends WalletBase[]; - final time = verboseTransaction['time'] as int; - final confirmations = verboseTransaction['confirmations'] as int ?? 0; + final time = verboseTransaction['time'] as int?; + final confirmations = verboseTransaction['confirmations'] as int? ?? 0; for (final vin in original.ins) { final id = HEX.encode(vin.hash!.reversed.toList());