From a21eb37b2640f0629509671378cc6ce401c7f56f Mon Sep 17 00:00:00 2001 From: julian Date: Mon, 16 Oct 2023 09:53:04 -0600 Subject: [PATCH] WIP bch transaction parsing --- .../global_settings_view/hidden_settings.dart | 77 +++++++++++++++++++ lib/services/mixins/electrum_x_parsing.dart | 14 ++++ lib/utilities/util.dart | 13 +++- 3 files changed, 101 insertions(+), 3 deletions(-) diff --git a/lib/pages/settings_views/global_settings_view/hidden_settings.dart b/lib/pages/settings_views/global_settings_view/hidden_settings.dart index 924524de7..c6782cff4 100644 --- a/lib/pages/settings_views/global_settings_view/hidden_settings.dart +++ b/lib/pages/settings_views/global_settings_view/hidden_settings.dart @@ -15,12 +15,15 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:hive_flutter/hive_flutter.dart'; import 'package:stackwallet/db/hive/db.dart'; +import 'package:stackwallet/electrumx_rpc/electrumx.dart'; import 'package:stackwallet/notifications/show_flush_bar.dart'; import 'package:stackwallet/providers/global/debug_service_provider.dart'; import 'package:stackwallet/providers/providers.dart'; +import 'package:stackwallet/services/mixins/electrum_x_parsing.dart'; import 'package:stackwallet/themes/stack_colors.dart'; import 'package:stackwallet/utilities/assets.dart'; import 'package:stackwallet/utilities/constants.dart'; +import 'package:stackwallet/utilities/enums/coin_enum.dart'; import 'package:stackwallet/utilities/text_styles.dart'; import 'package:stackwallet/utilities/util.dart'; import 'package:stackwallet/widgets/background.dart'; @@ -343,6 +346,80 @@ class HiddenSettings extends StatelessWidget { } }, ), + const SizedBox( + height: 12, + ), + Consumer( + builder: (_, ref, __) { + return GestureDetector( + onTap: () async { + try { + final p = TT(); + + final n = ref + .read(nodeServiceChangeNotifierProvider) + .getPrimaryNodeFor( + coin: Coin.bitcoincash)!; + + final e = ElectrumX.from( + node: ElectrumXNode( + address: n.host, + port: n.port, + name: n.name, + id: n.id, + useSSL: n.useSSL, + ), + prefs: + ref.read(prefsChangeNotifierProvider), + failovers: [], + ); + + final txids = [ + "", // cashTokenTxid + "6a0444358bc41913c5b04a8dc06896053184b3641bc62502d18f954865b6ce1e", // normalTxid + "67f13c375f9be897036cac77b7900dc74312c4ba6fe22f419f5cb21d4151678c", // fusionTxid + "c0ac3f88b238a023d2a87226dc90c3b0f9abc3eeb227e2730087b0b95ee5b3f9", // slpTokenSendTxid + "7a427a156fe70f83d3ccdd17e75804cc0df8c95c64ce04d256b3851385002a0b", // slpTokenGenesisTxid + ]; + + // final json = + // await e.getTransaction(txHash: txids[1]); + // await p.parseBchTx(json, "NORMAL TXID:"); + // + // final json2 = + // await e.getTransaction(txHash: txids[2]); + // await p.parseBchTx(json2, "FUSION TXID:"); + // + // // print("CASH TOKEN TXID:"); + // // final json3 = + // // await e.getTransaction(txHash: txids[2]); + // // await p.parseBchTx(json3); + // + final json4 = + await e.getTransaction(txHash: txids[3]); + await p.parseBchTx( + json4, "SLP TOKEN SEND TXID:"); + + final json5 = + await e.getTransaction(txHash: txids[4]); + await p.parseBchTx( + json5, "SLP TOKEN GENESIS TXID:"); + } catch (e, s) { + print("$e\n$s"); + } + }, + child: RoundedWhiteContainer( + child: Text( + "Parse BCH tx test", + style: STextStyles.button(context).copyWith( + color: Theme.of(context) + .extension()! + .accentColorDark), + ), + ), + ); + }, + ), // const SizedBox( // height: 12, // ), diff --git a/lib/services/mixins/electrum_x_parsing.dart b/lib/services/mixins/electrum_x_parsing.dart index d0b88ba35..224073574 100644 --- a/lib/services/mixins/electrum_x_parsing.dart +++ b/lib/services/mixins/electrum_x_parsing.dart @@ -16,9 +16,23 @@ import 'package:stackwallet/models/isar/models/isar_models.dart'; import 'package:stackwallet/services/mixins/paynym_wallet_interface.dart'; import 'package:stackwallet/utilities/amount/amount.dart'; import 'package:stackwallet/utilities/enums/coin_enum.dart'; +import 'package:stackwallet/utilities/util.dart' as util; import 'package:tuple/tuple.dart'; +class TT with ElectrumXParsing { + // +} + mixin ElectrumXParsing { + Future parseBchTx( + Map json, [ + String? debugTitle, + ]) async { + print("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"); + util.Util.printJson(json, debugTitle); + print("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"); + } + Future> parseTransaction( Map txData, dynamic electrumxClient, diff --git a/lib/utilities/util.dart b/lib/utilities/util.dart index c73f697cc..cdfc1bfb7 100644 --- a/lib/utilities/util.dart +++ b/lib/utilities/util.dart @@ -73,14 +73,21 @@ abstract class Util { return MaterialColor(color.value, swatch); } - static void printJson(dynamic json) { + static void printJson(dynamic json, [String? debugTitle]) { + final String result; if (json is Map || json is List) { final spaces = ' ' * 4; final encoder = JsonEncoder.withIndent(spaces); final pretty = encoder.convert(json); - log(pretty); + result = pretty; } else { - log(dynamic.toString()); + result = dynamic.toString(); + } + + if (debugTitle != null) { + log("$debugTitle\n$result"); + } else { + log(result); } } }