diff --git a/integration_test/utility/tests_utility.dart b/integration_test/utility/tests_utility.dart index 99bee8be333e7e8e4d2ba88f8a9bfb3a7e9dfd43..2c51c888e88e2633d0e67f774e90ae63334ffb25 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 2ced8efb466ed94c619abeebb8c6941485e368de..a2cb30dfc3ce04ef8a844b2f95f110065c9d392b 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 c13d84746a97daf1ff8a4f2b0166356e9b741701..79fe0c820d4eadbb4f17602376e4d5630e949105 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 ee82331b912ebad954e9ca41b76600223d20707c..ff3cf5a75a95425f40ee95bf7a0a3cc903e46691 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 430f866485c4fe199c6831ac4b8f02379ccf07e3..e13c394b62b0a411420057a3073227e97337fc95 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 8062db3cbca889eea317e011b063298661c8c776..675e08ac0a86150a6135708689e64a7f569b985a 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 ef0bab4ae08cb506483803389cd0f1737ba16934..c0a39b383fdc7e2653f7a33cd699cce033f3fa16 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 6e9299cc53f938980fa009c51bc99cdbac04c931..a8bd2ae3cf3c14af0f3f1fa08ba6d3220fffd13c 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 3259b1205d44492baf34977c2b559b9ed47c6138..77e82b3d9580480e03b0f775c07ab0b3ec9f0bc4 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 3f485f5266f86b37d994cfe6d637ea1e4c8c8a96..a5c9ae2e3b641877ed5ee8312b1e2ae6d8c1ec71 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 0000000000000000000000000000000000000000..fa9ffd36b1f91c653c8717386ad831e449b26c44 --- /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 95c2dc549c952137160832d82cc9a041e83de2f7..c567a93b812d4c0e8814468840f1c49e8848f2ef 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 d3b7c4beec6ccef92bde58c08b838cf0b49e37a4..a47933db5b442c245c75d8599304556def870ecd 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 2fa211f30a99d38d45b1bf3d07aa9fb417660dd0..8b0a970afcf603f0746a27b63f034a0fd5baa962 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 2e1499d0fd4f9d880615fd97046dc798cfc8ab9e..dc25f0ae0078a21a0220e61bc9c99eccc1eadd52 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 78b6bd4421464a473555bcbbc0f900cb370b9287..38f763466127b48e65e6873fafc4e9c6cafb5656 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 7093444a8c6f1b3e4cd2a2fede6b0b812b6585e2..0e0567c643af3212ea643b5e3be2610c0f12648b 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 c319ea4878ddc4401b14b516baddc16796d8ce57..ca3a87a5aa1944e91e8e25cd8292f6059b8fbe90 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 54d9cbc3016dffdba66edd55a69d4e729c1522cf..f38f9e06f8ac371a5a8788af2f384eadad405e28 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 6f7ea47528d34c150aa8068506baf06c124ed35e..9bfa398fb48ad6afd4183f58b2715552ea922849 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 c40fe3f2a21c8144b5d1cc9e7b5b330aea9d6e27..97a592ede43d472e7bf00d81ff233efe9b7bf1c3 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';