From efed633e87a583e9c8823e31f126867158f95e24 Mon Sep 17 00:00:00 2001
From: poka <poka@p2p.legal>
Date: Sat, 30 Nov 2024 18:48:27 +0100
Subject: [PATCH] refac utils

---
 integration_test/utility/tests_utility.dart   |  1 +
 lib/providers/duniter_indexer.dart            |  1 +
 lib/providers/substrate_sdk.dart              | 40 ++-----------------
 lib/providers/wallet_options.dart             |  1 +
 lib/screens/myWallets/import_g1_v1.dart       |  1 +
 lib/screens/myWallets/manage_membership.dart  |  1 +
 lib/screens/myWallets/migrate_identity.dart   |  1 +
 lib/screens/myWallets/wallet_options.dart     |  1 +
 lib/screens/qrcode_fullscreen.dart            |  2 +-
 lib/screens/transaction_in_progress.dart      |  1 +
 lib/utils.dart                                | 38 ++++++++++++++++++
 lib/widgets/cert_tile.dart                    |  2 +-
 lib/widgets/certify/certify_button.dart       |  1 +
 lib/widgets/contacts_list.dart                |  2 +-
 lib/widgets/header_profile.dart               |  1 +
 lib/widgets/history_view.dart                 |  1 +
 lib/widgets/payment_popup.dart                |  1 +
 lib/widgets/search_identity_query.dart        |  2 +-
 lib/widgets/search_result_list.dart           |  2 +-
 lib/widgets/transaction_in_progress_tile.dart |  1 +
 lib/widgets/transaction_tile.dart             |  2 +-
 21 files changed, 60 insertions(+), 43 deletions(-)
 create mode 100644 lib/utils.dart

diff --git a/integration_test/utility/tests_utility.dart b/integration_test/utility/tests_utility.dart
index 99bee8be..2c51c888 100644
--- a/integration_test/utility/tests_utility.dart
+++ b/integration_test/utility/tests_utility.dart
@@ -7,6 +7,7 @@ import 'package:gecko/models/wallet_data.dart';
 import 'package:gecko/providers/generate_wallets.dart';
 import 'package:gecko/providers/my_wallets.dart';
 import 'package:gecko/providers/substrate_sdk.dart';
+import 'package:gecko/utils.dart';
 import 'package:provider/provider.dart';
 import 'dart:io' as io;
 import 'package:gecko/main.dart' as app;
diff --git a/lib/providers/duniter_indexer.dart b/lib/providers/duniter_indexer.dart
index 2ced8efb..a2cb30df 100644
--- a/lib/providers/duniter_indexer.dart
+++ b/lib/providers/duniter_indexer.dart
@@ -8,6 +8,7 @@ import 'package:gecko/globals.dart';
 import 'package:gecko/models/queries_indexer.dart';
 import 'package:gecko/providers/home.dart';
 import 'package:gecko/providers/substrate_sdk.dart';
+import 'package:gecko/utils.dart';
 import 'package:graphql_flutter/graphql_flutter.dart';
 import 'package:provider/provider.dart';
 
diff --git a/lib/providers/substrate_sdk.dart b/lib/providers/substrate_sdk.dart
index c13d8474..79fe0c82 100644
--- a/lib/providers/substrate_sdk.dart
+++ b/lib/providers/substrate_sdk.dart
@@ -6,13 +6,13 @@ import 'package:flutter/material.dart';
 import 'package:gecko/globals.dart';
 import 'package:gecko/models/chest_data.dart';
 import 'package:gecko/models/migrate_wallet_checks.dart';
-import 'package:gecko/models/scale_functions.dart';
 import 'package:gecko/models/transaction_content.dart';
 import 'package:gecko/models/wallet_data.dart';
 import 'package:gecko/providers/home.dart';
 import 'package:gecko/providers/my_wallets.dart';
 import 'package:gecko/providers/wallet_options.dart';
 import 'package:gecko/providers/wallets_profiles.dart';
+import 'package:gecko/utils.dart';
 import 'package:gecko/widgets/certify/cert_state.dart';
 import 'package:gecko/widgets/transaction_status.dart';
 import 'package:pinenacl/ed25519.dart';
@@ -24,7 +24,6 @@ import 'package:polkawallet_sdk/storage/keyring.dart';
 import 'package:polkawallet_sdk/storage/types/keyPairData.dart';
 import 'package:polkawallet_sdk/webviewWithExtension/types/signExtrinsicParam.dart';
 import 'package:provider/provider.dart';
-import 'package:truncate/truncate.dart';
 import 'package:pointycastle/pointycastle.dart' as pc;
 import "package:hex/hex.dart";
 import 'package:uuid/uuid.dart' show Uuid;
@@ -1058,7 +1057,7 @@ class SubstrateSdk with ChangeNotifier {
     final prefix = 'icok'.codeUnits;
     final genesisHashString = await getGenesisHash();
     final genesisHash = HEX.decode(genesisHashString.substring(2)) as Uint8List;
-    final idtyIndex = _int32bytes((await _getIdentityIndexOf(fromAddress))!);
+    final idtyIndex = int32bytes((await _getIdentityIndexOf(fromAddress))!);
     final oldPubkey = await addressToPubkey(fromAddress);
     final messageToSign = Uint8List.fromList(prefix + genesisHash + idtyIndex + oldPubkey);
     final messageToSignHex = HEX.encode(messageToSign);
@@ -1120,7 +1119,7 @@ newKeySig: $newKeySigType""");
     final prefix = 'revo'.codeUnits;
     final genesisHashString = await getGenesisHash();
     final genesisHash = HEX.decode(genesisHashString.substring(2)) as Uint8List;
-    final idtyIndexBytes = _int32bytes(idtyIndex!);
+    final idtyIndexBytes = int32bytes(idtyIndex!);
     final messageToSign = Uint8List.fromList(prefix + genesisHash + idtyIndexBytes);
     final revocationSig = (await _signMessage(messageToSign, address, password)).substring(2);
     final revocationSigTyped = '0x01$revocationSig';
@@ -1218,36 +1217,3 @@ newKeySig: $newKeySigType""");
     notifyListeners();
   }
 }
-
-////////////////////////////////////////////
-/////// 6: UI ELEMENTS (off class) /////////
-////////////////////////////////////////////
-
-void snackNode(bool isConnected) {
-  String message;
-  if (!isConnected) {
-    message = "noDuniterNodeAvailableTryLater".tr();
-  } else {
-    final sub = Provider.of<SubstrateSdk>(homeContext, listen: false);
-
-    message = "${"youAreConnectedToNode".tr()}\n${sub.getConnectedEndpoint()!.split('//')[1]}";
-  }
-  final snackBar = SnackBar(
-      backgroundColor: Colors.grey[900],
-      padding: const EdgeInsets.all(20),
-      content: Text(message, style: scaledTextStyle(fontSize: 13)),
-      duration: const Duration(seconds: 4));
-  ScaffoldMessenger.of(homeContext).showSnackBar(snackBar);
-}
-
-String getShortPubkey(String pubkey) {
-  String pubkeyShort = truncate(pubkey, 7, omission: String.fromCharCode(0x2026), position: TruncatePosition.end) +
-      truncate(pubkey, 6, omission: "", position: TruncatePosition.start);
-  return pubkeyShort;
-}
-
-Uint8List _int32bytes(int value) => Uint8List(4)..buffer.asInt32List()[0] = value;
-
-double round(double number, [int decimal = 2]) {
-  return double.parse((number.toStringAsFixed(decimal)));
-}
diff --git a/lib/providers/wallet_options.dart b/lib/providers/wallet_options.dart
index ee82331b..ff3cf5a7 100644
--- a/lib/providers/wallet_options.dart
+++ b/lib/providers/wallet_options.dart
@@ -12,6 +12,7 @@ import 'package:gecko/providers/my_wallets.dart';
 import 'package:gecko/models/wallet_data.dart';
 import 'package:gecko/providers/substrate_sdk.dart';
 import 'package:gecko/providers/v2s_datapod.dart';
+import 'package:gecko/utils.dart';
 import 'package:gecko/widgets/commons/common_elements.dart';
 import 'package:gecko/screens/transaction_in_progress.dart';
 import 'package:image_picker/image_picker.dart';
diff --git a/lib/screens/myWallets/import_g1_v1.dart b/lib/screens/myWallets/import_g1_v1.dart
index 430f8664..e13c394b 100644
--- a/lib/screens/myWallets/import_g1_v1.dart
+++ b/lib/screens/myWallets/import_g1_v1.dart
@@ -14,6 +14,7 @@ import 'package:gecko/providers/substrate_sdk.dart';
 import 'package:gecko/providers/wallets_profiles.dart';
 import 'package:gecko/screens/myWallets/unlocking_wallet.dart';
 import 'package:gecko/screens/transaction_in_progress.dart';
+import 'package:gecko/utils.dart';
 import 'package:gecko/widgets/certifications.dart';
 import 'package:gecko/widgets/commons/top_appbar.dart';
 import 'package:gecko/widgets/idty_status.dart';
diff --git a/lib/screens/myWallets/manage_membership.dart b/lib/screens/myWallets/manage_membership.dart
index 8062db3c..675e08ac 100644
--- a/lib/screens/myWallets/manage_membership.dart
+++ b/lib/screens/myWallets/manage_membership.dart
@@ -7,6 +7,7 @@ import 'package:gecko/models/scale_functions.dart';
 import 'package:gecko/models/widgets_keys.dart';
 import 'package:gecko/providers/my_wallets.dart';
 import 'package:gecko/providers/substrate_sdk.dart';
+import 'package:gecko/utils.dart';
 import 'package:gecko/widgets/commons/common_elements.dart';
 import 'package:gecko/screens/myWallets/migrate_identity.dart';
 import 'package:gecko/screens/transaction_in_progress.dart';
diff --git a/lib/screens/myWallets/migrate_identity.dart b/lib/screens/myWallets/migrate_identity.dart
index ef0bab4a..c0a39b38 100644
--- a/lib/screens/myWallets/migrate_identity.dart
+++ b/lib/screens/myWallets/migrate_identity.dart
@@ -14,6 +14,7 @@ import 'package:gecko/providers/substrate_sdk.dart';
 import 'package:gecko/providers/wallet_options.dart';
 import 'package:gecko/providers/wallets_profiles.dart';
 import 'package:gecko/screens/transaction_in_progress.dart';
+import 'package:gecko/utils.dart';
 import 'package:gecko/widgets/commons/top_appbar.dart';
 import 'package:polkawallet_sdk/api/apiKeyring.dart';
 import 'package:provider/provider.dart';
diff --git a/lib/screens/myWallets/wallet_options.dart b/lib/screens/myWallets/wallet_options.dart
index 6e9299cc..a8bd2ae3 100644
--- a/lib/screens/myWallets/wallet_options.dart
+++ b/lib/screens/myWallets/wallet_options.dart
@@ -20,6 +20,7 @@ import 'package:gecko/screens/activity.dart';
 import 'package:gecko/screens/myWallets/chest_options.dart';
 import 'package:gecko/screens/myWallets/import_g1_v1.dart';
 import 'package:gecko/screens/qrcode_fullscreen.dart';
+import 'package:gecko/utils.dart';
 import 'package:gecko/widgets/balance.dart';
 import 'package:gecko/widgets/bottom_app_bar.dart';
 import 'package:gecko/widgets/buttons/manage_membership_button.dart';
diff --git a/lib/screens/qrcode_fullscreen.dart b/lib/screens/qrcode_fullscreen.dart
index 3259b120..77e82b3d 100644
--- a/lib/screens/qrcode_fullscreen.dart
+++ b/lib/screens/qrcode_fullscreen.dart
@@ -3,7 +3,7 @@
 import 'package:gecko/globals.dart';
 import 'package:flutter/material.dart';
 import 'package:gecko/models/scale_functions.dart';
-import 'package:gecko/providers/substrate_sdk.dart';
+import 'package:gecko/utils.dart';
 import 'package:qr_flutter/qr_flutter.dart';
 import 'package:screen_brightness/screen_brightness.dart';
 
diff --git a/lib/screens/transaction_in_progress.dart b/lib/screens/transaction_in_progress.dart
index 3f485f52..a5c9ae2e 100644
--- a/lib/screens/transaction_in_progress.dart
+++ b/lib/screens/transaction_in_progress.dart
@@ -6,6 +6,7 @@ import 'package:gecko/models/widgets_keys.dart';
 import 'package:gecko/providers/my_wallets.dart';
 import 'package:gecko/providers/substrate_sdk.dart';
 import 'package:gecko/providers/wallets_profiles.dart';
+import 'package:gecko/utils.dart';
 import 'package:gecko/widgets/commons/loading.dart';
 import 'package:gecko/widgets/transaction_status.dart';
 import 'package:gecko/widgets/transaction_status_icon.dart';
diff --git a/lib/utils.dart b/lib/utils.dart
new file mode 100644
index 00000000..fa9ffd36
--- /dev/null
+++ b/lib/utils.dart
@@ -0,0 +1,38 @@
+import 'dart:typed_data';
+
+import 'package:easy_localization/easy_localization.dart';
+import 'package:flutter/material.dart';
+import 'package:gecko/globals.dart';
+import 'package:gecko/models/scale_functions.dart';
+import 'package:gecko/providers/substrate_sdk.dart';
+import 'package:provider/provider.dart';
+import 'package:truncate/truncate.dart';
+
+void snackNode(bool isConnected) {
+  String message;
+  if (!isConnected) {
+    message = "noDuniterNodeAvailableTryLater".tr();
+  } else {
+    final sub = Provider.of<SubstrateSdk>(homeContext, listen: false);
+
+    message = "${"youAreConnectedToNode".tr()}\n${sub.getConnectedEndpoint()!.split('//')[1]}";
+  }
+  final snackBar = SnackBar(
+      backgroundColor: Colors.grey[900],
+      padding: const EdgeInsets.all(20),
+      content: Text(message, style: scaledTextStyle(fontSize: 13)),
+      duration: const Duration(seconds: 4));
+  ScaffoldMessenger.of(homeContext).showSnackBar(snackBar);
+}
+
+String getShortPubkey(String pubkey) {
+  String pubkeyShort = truncate(pubkey, 7, omission: String.fromCharCode(0x2026), position: TruncatePosition.end) +
+      truncate(pubkey, 6, omission: "", position: TruncatePosition.start);
+  return pubkeyShort;
+}
+
+Uint8List int32bytes(int value) => Uint8List(4)..buffer.asInt32List()[0] = value;
+
+double round(double number, [int decimal = 2]) {
+  return double.parse((number.toStringAsFixed(decimal)));
+}
diff --git a/lib/widgets/cert_tile.dart b/lib/widgets/cert_tile.dart
index 95c2dc54..c567a93b 100644
--- a/lib/widgets/cert_tile.dart
+++ b/lib/widgets/cert_tile.dart
@@ -2,8 +2,8 @@ import 'package:flutter/material.dart';
 import 'package:gecko/globals.dart';
 import 'package:gecko/models/scale_functions.dart';
 import 'package:gecko/models/widgets_keys.dart';
-import 'package:gecko/providers/substrate_sdk.dart';
 import 'package:gecko/screens/wallet_view.dart';
+import 'package:gecko/utils.dart';
 import 'package:gecko/widgets/datapod_avatar.dart';
 
 class CertTile extends StatelessWidget {
diff --git a/lib/widgets/certify/certify_button.dart b/lib/widgets/certify/certify_button.dart
index d3b7c4be..a47933db 100644
--- a/lib/widgets/certify/certify_button.dart
+++ b/lib/widgets/certify/certify_button.dart
@@ -12,6 +12,7 @@ import 'package:gecko/providers/wallets_profiles.dart';
 import 'package:gecko/screens/myWallets/unlocking_wallet.dart';
 import 'package:gecko/screens/transaction_in_progress.dart';
 import 'package:gecko/screens/wallet_view.dart' show buttonSize, buttonFontSize;
+import 'package:gecko/utils.dart';
 import 'package:gecko/widgets/commons/common_elements.dart';
 import 'package:provider/provider.dart';
 
diff --git a/lib/widgets/contacts_list.dart b/lib/widgets/contacts_list.dart
index 2fa211f3..8b0a970a 100644
--- a/lib/widgets/contacts_list.dart
+++ b/lib/widgets/contacts_list.dart
@@ -6,9 +6,9 @@ import 'package:gecko/models/scale_functions.dart';
 import 'package:gecko/models/wallet_data.dart';
 import 'package:gecko/models/widgets_keys.dart';
 import 'package:gecko/providers/duniter_indexer.dart';
-import 'package:gecko/providers/substrate_sdk.dart';
 import 'package:gecko/providers/wallets_profiles.dart';
 import 'package:gecko/screens/wallet_view.dart';
+import 'package:gecko/utils.dart';
 import 'package:gecko/widgets/balance.dart';
 import 'package:gecko/widgets/datapod_avatar.dart';
 import 'package:gecko/widgets/name_by_address.dart';
diff --git a/lib/widgets/header_profile.dart b/lib/widgets/header_profile.dart
index 2e1499d0..dc25f0ae 100644
--- a/lib/widgets/header_profile.dart
+++ b/lib/widgets/header_profile.dart
@@ -8,6 +8,7 @@ import 'package:gecko/providers/substrate_sdk.dart';
 import 'package:gecko/providers/wallet_options.dart';
 import 'package:gecko/providers/wallets_profiles.dart';
 import 'package:gecko/screens/certifications.dart';
+import 'package:gecko/utils.dart';
 import 'package:gecko/widgets/balance.dart';
 import 'package:gecko/widgets/certifications.dart';
 import 'package:gecko/widgets/datapod_avatar.dart';
diff --git a/lib/widgets/history_view.dart b/lib/widgets/history_view.dart
index 78b6bd44..38f76346 100644
--- a/lib/widgets/history_view.dart
+++ b/lib/widgets/history_view.dart
@@ -5,6 +5,7 @@ import 'package:gecko/models/scale_functions.dart';
 import 'package:gecko/providers/duniter_indexer.dart';
 import 'package:gecko/providers/substrate_sdk.dart';
 import 'package:gecko/screens/wallet_view.dart';
+import 'package:gecko/utils.dart';
 import 'package:gecko/widgets/commons/loading.dart';
 import 'package:gecko/widgets/page_route_no_transition.dart';
 import 'package:gecko/widgets/transaction_tile.dart';
diff --git a/lib/widgets/payment_popup.dart b/lib/widgets/payment_popup.dart
index 7093444a..0e0567c6 100644
--- a/lib/widgets/payment_popup.dart
+++ b/lib/widgets/payment_popup.dart
@@ -12,6 +12,7 @@ import 'package:gecko/providers/substrate_sdk.dart';
 import 'package:gecko/providers/wallet_options.dart';
 import 'package:gecko/providers/wallets_profiles.dart';
 import 'package:gecko/screens/activity.dart';
+import 'package:gecko/utils.dart';
 import 'package:gecko/widgets/balance.dart';
 import 'package:gecko/widgets/name_by_address.dart';
 import 'package:provider/provider.dart';
diff --git a/lib/widgets/search_identity_query.dart b/lib/widgets/search_identity_query.dart
index c319ea48..ca3a87a5 100644
--- a/lib/widgets/search_identity_query.dart
+++ b/lib/widgets/search_identity_query.dart
@@ -7,9 +7,9 @@ import 'package:gecko/models/scale_functions.dart';
 import 'package:gecko/models/widgets_keys.dart';
 import 'package:gecko/providers/duniter_indexer.dart';
 import 'package:gecko/providers/search.dart';
-import 'package:gecko/providers/substrate_sdk.dart';
 import 'package:gecko/providers/wallets_profiles.dart';
 import 'package:gecko/screens/wallet_view.dart';
+import 'package:gecko/utils.dart';
 import 'package:gecko/widgets/balance.dart';
 import 'package:gecko/widgets/datapod_avatar.dart';
 import 'package:graphql_flutter/graphql_flutter.dart';
diff --git a/lib/widgets/search_result_list.dart b/lib/widgets/search_result_list.dart
index 54d9cbc3..f38f9e06 100644
--- a/lib/widgets/search_result_list.dart
+++ b/lib/widgets/search_result_list.dart
@@ -5,9 +5,9 @@ import 'package:gecko/models/wallet_data.dart';
 import 'package:gecko/models/widgets_keys.dart';
 import 'package:gecko/providers/duniter_indexer.dart';
 import 'package:gecko/providers/search.dart';
-import 'package:gecko/providers/substrate_sdk.dart';
 import 'package:gecko/providers/wallets_profiles.dart';
 import 'package:gecko/screens/wallet_view.dart';
+import 'package:gecko/utils.dart';
 import 'package:gecko/widgets/balance.dart';
 import 'package:gecko/widgets/commons/loading.dart';
 import 'package:gecko/widgets/datapod_avatar.dart';
diff --git a/lib/widgets/transaction_in_progress_tile.dart b/lib/widgets/transaction_in_progress_tile.dart
index 6f7ea475..9bfa398f 100644
--- a/lib/widgets/transaction_in_progress_tile.dart
+++ b/lib/widgets/transaction_in_progress_tile.dart
@@ -7,6 +7,7 @@ import 'package:gecko/models/scale_functions.dart';
 import 'package:gecko/models/transaction_content.dart';
 import 'package:gecko/providers/duniter_indexer.dart';
 import 'package:gecko/providers/substrate_sdk.dart';
+import 'package:gecko/utils.dart';
 import 'package:gecko/widgets/datapod_avatar.dart';
 import 'package:gecko/widgets/transaction_status.dart';
 import 'package:gecko/widgets/transaction_status_icon.dart';
diff --git a/lib/widgets/transaction_tile.dart b/lib/widgets/transaction_tile.dart
index c40fe3f2..97a592ed 100644
--- a/lib/widgets/transaction_tile.dart
+++ b/lib/widgets/transaction_tile.dart
@@ -3,8 +3,8 @@ import 'package:gecko/globals.dart';
 import 'package:gecko/models/scale_functions.dart';
 import 'package:gecko/models/widgets_keys.dart';
 import 'package:gecko/providers/duniter_indexer.dart';
-import 'package:gecko/providers/substrate_sdk.dart';
 import 'package:gecko/screens/wallet_view.dart';
+import 'package:gecko/utils.dart';
 import 'package:gecko/widgets/datapod_avatar.dart';
 import 'package:gecko/widgets/page_route_no_transition.dart';
 
-- 
GitLab