diff --git a/lib/providers/home.dart b/lib/providers/home.dart index d43e581cd3f87be3acc41f5667b0aff0b57c5d1c..5a5425689ee090652601089e7451dfb0d800c735 100644 --- a/lib/providers/home.dart +++ b/lib/providers/home.dart @@ -13,7 +13,7 @@ import 'package:gecko/providers/wallets_profiles.dart'; import 'package:gecko/screens/myWallets/unlocking_wallet.dart'; import 'package:gecko/screens/search.dart'; import 'package:hive_flutter/hive_flutter.dart'; -import 'package:flutter/foundation.dart' show kIsWeb; +import 'package:flutter/foundation.dart' show kDebugMode, kIsWeb; import 'package:path_provider/path_provider.dart' as pp; import 'package:package_info_plus/package_info_plus.dart'; import 'package:path_provider/path_provider.dart'; @@ -63,7 +63,9 @@ class HomeProvider with ChangeNotifier { String buildNumber; PackageInfo packageInfo = await PackageInfo.fromPlatform(); version = packageInfo.version; - buildNumber = packageInfo.buildNumber; + buildNumber = kDebugMode + ? packageInfo.buildNumber + : (int.parse(packageInfo.buildNumber) - 1000).toString(); notifyListeners(); return version + '+' + buildNumber; diff --git a/lib/providers/substrate_sdk.dart b/lib/providers/substrate_sdk.dart index 367ecfd189137097d706c1574349ee515c3713f2..ef592c492012a1d7dca26fc61b3af441a885865d 100644 --- a/lib/providers/substrate_sdk.dart +++ b/lib/providers/substrate_sdk.dart @@ -3,6 +3,8 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:gecko/globals.dart'; +import 'package:gecko/models/chest_data.dart'; +import 'package:gecko/models/wallet_data.dart'; import 'package:polkawallet_sdk/api/apiKeyring.dart'; import 'package:polkawallet_sdk/api/types/networkParams.dart'; import 'package:polkawallet_sdk/api/types/txInfoData.dart'; @@ -205,6 +207,18 @@ class SubstrateSdk with ChangeNotifier { return balance; } + Future<double> subscribeBalance(String address, {bool isUd = false}) async { + double balance = 0.0; + if (nodeConnected) { + await sdk.api.account.subscribeBalance(address, (_balance) { + balance = int.parse(_balance.freeBalance) / 100; + notifyListeners(); + }); + } + + return balance; + } + KeyPairData getKeypair(String address) { return keyring.keyPairs.firstWhere((kp) => kp.address == address, orElse: (() => KeyPairData())); @@ -251,9 +265,14 @@ class SubstrateSdk with ChangeNotifier { return gen.mnemonic!; } - String setCurrentWallet(String address) { + Future<String> setCurrentWallet(WalletData _wallet) async { + final currentChestNumber = configBox.get('currentChest'); + ChestData _newChestData = chestBox.get(currentChestNumber)!; + _newChestData.defaultWallet = _wallet.number; + await chestBox.put(currentChestNumber, _newChestData); + try { - final acc = getKeypair(address); + final acc = getKeypair(_wallet.address!); keyring.setCurrent(acc); return acc.address!; } catch (e) { @@ -277,7 +296,7 @@ class SubstrateSdk with ChangeNotifier { required String password}) async { transactionStatus = ''; - setCurrentWallet(fromAddress); + // setCurrentWallet(fromAddress); log.d(keyring.current.address); log.d(fromAddress); @@ -327,7 +346,7 @@ class SubstrateSdk with ChangeNotifier { String fromAddress, String password, String toAddress) async { transactionStatus = ''; - setCurrentWallet(fromAddress); + // setCurrentWallet(fromAddress); log.d('me: ' + fromAddress); log.d('to: ' + toAddress); @@ -425,7 +444,7 @@ class SubstrateSdk with ChangeNotifier { Future<String> confirmIdentity( String fromAddress, String name, String password) async { // Confirm identity - setCurrentWallet(fromAddress); + // setCurrentWallet(fromAddress); log.d('me: ' + keyring.current.address!); final sender = TxSenderData( diff --git a/lib/providers/wallets_profiles.dart b/lib/providers/wallets_profiles.dart index 564c20f7ffb454a278595ed315c80938e3622d6d..70c9bd141a6952a51390dbdad44038b63fb802c9 100644 --- a/lib/providers/wallets_profiles.dart +++ b/lib/providers/wallets_profiles.dart @@ -15,7 +15,6 @@ class WalletsProfilesProvider with ChangeNotifier { String? pubkey = ''; String pubkeyShort = ''; - final TextEditingController outputPubkey = TextEditingController(); List? transBC; String? fetchMoreCursor; Map? pageInfo; @@ -40,7 +39,6 @@ class WalletsProfilesProvider with ChangeNotifier { return 'false'; } if (barcode != null && isPubkey(barcode)) { - outputPubkey.text = barcode; Navigator.push( context, MaterialPageRoute(builder: (context) { @@ -85,17 +83,6 @@ class WalletsProfilesProvider with ChangeNotifier { log.d("C'est une pubkey !"); this.pubkey = pubkey; - // getShortPubkey(pubkey); - - // outputPubkey.text = pubkey; - - // Navigator.push( - // context, - // MaterialPageRoute(builder: (context) { - // return const WalletViewScreen(); - // }), - // ); - // notifyListeners(); return true; } else { @@ -212,7 +199,6 @@ class WalletsProfilesProvider with ChangeNotifier { } void resetdHistory() { - outputPubkey.text = ''; notifyListeners(); } diff --git a/lib/screens/myWallets/choose_wallet.dart b/lib/screens/myWallets/choose_wallet.dart index cdd600083d971d7e6d4621d223554b11e7b2fd1a..d6c5a8008573e369c6604d32fc21b66fac102e71 100644 --- a/lib/screens/myWallets/choose_wallet.dart +++ b/lib/screens/myWallets/choose_wallet.dart @@ -1,11 +1,11 @@ +import 'dart:io'; + import 'package:flutter/services.dart'; import 'package:gecko/globals.dart'; import 'package:flutter/material.dart'; -import 'package:gecko/models/chest_data.dart'; import 'package:gecko/models/wallet_data.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/screens/myWallets/wallets_home.dart'; import 'package:provider/provider.dart'; // import 'package:gecko/models/home.dart'; @@ -17,14 +17,13 @@ class ChooseWalletScreen extends StatelessWidget { : super(key: key); final int chest; final String pin; - int? _derivation; - List<int?>? _selectedId; + WalletData? selectedWallet; @override Widget build(BuildContext context) { SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]); + SubstrateSdk _sub = Provider.of<SubstrateSdk>(context, listen: false); - // HomeProvider _homeProvider = Provider.of<HomeProvider>(context); return Scaffold( appBar: AppBar( toolbarHeight: 60 * ratio, @@ -49,6 +48,11 @@ class ChooseWalletScreen extends StatelessWidget { onPrimary: Colors.white, // foreground ), onPressed: () async { + await _sub.setCurrentWallet(selectedWallet!); + + // _walletViewProvider.reload(); + _sub.reload(); + Navigator.pop(context); Navigator.pop(context); Navigator.pop(context); @@ -62,7 +66,6 @@ class ChooseWalletScreen extends StatelessWidget { ), ), ), - // const SizedBox(height: 160), ]), )); } @@ -70,16 +73,12 @@ class ChooseWalletScreen extends StatelessWidget { Widget myWalletsTiles(BuildContext context, int? currentChest) { MyWalletsProvider _myWalletProvider = Provider.of<MyWalletsProvider>(context); - final bool isWalletsExists = _myWalletProvider.checkIfWalletExist(); - SubstrateSdk _sub = Provider.of<SubstrateSdk>(context, listen: false); - WalletsProfilesProvider _walletViewProvider = - Provider.of<WalletsProfilesProvider>(context, listen: false); + // SubstrateSdk _sub = Provider.of<SubstrateSdk>(context, listen: false); + final bool isWalletsExists = _myWalletProvider.checkIfWalletExist(); WalletData? defaultWallet = _myWalletProvider.getDefaultWallet(); - _selectedId ??= defaultWallet!.id(); - _derivation ??= defaultWallet!.derivation!; - _sub.setCurrentWallet(defaultWallet!.address!); + selectedWallet ??= defaultWallet!; _myWalletProvider.readAllWallets(currentChest); if (!isWalletsExists) { @@ -120,14 +119,8 @@ class ChooseWalletScreen extends StatelessWidget { padding: const EdgeInsets.all(16), child: GestureDetector( onTap: () { - _derivation = _repository.derivation!; - _selectedId = _repository.id(); - chestBox.get(currentChest)!.defaultWallet = - _repository.number; - - _sub.setCurrentWallet(_repository.address!); + selectedWallet = _repository; _myWalletProvider.rebuildWidget(); - _walletViewProvider.reload(); }, child: ClipOvalShadow( shadow: const Shadow( @@ -158,10 +151,19 @@ class ChooseWalletScreen extends StatelessWidget { alignment: Alignment.bottomCenter, scale: 0.5, ) - : Image.asset( - _repository.imageCustomPath!, - alignment: Alignment.bottomCenter, - scale: 0.5, + : Container( + width: 120, + height: 120, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: Colors.transparent, + image: DecorationImage( + fit: BoxFit.contain, + image: FileImage( + File(_repository.imageCustomPath!), + ), + ), + ), ), )), ListTile( @@ -170,9 +172,10 @@ class ChooseWalletScreen extends StatelessWidget { bottom: Radius.circular(12), ), ), - tileColor: _repository.id()[1] == _selectedId![1] - ? orangeC - : const Color(0xffFFD58D), + tileColor: + _repository.address == selectedWallet!.address + ? orangeC + : const Color(0xffFFD58D), title: Center( child: Padding( padding: @@ -182,27 +185,17 @@ class ChooseWalletScreen extends StatelessWidget { textAlign: TextAlign.center, style: TextStyle( fontSize: 17.0, - color: - _repository.id()[1] == _selectedId![1] - ? const Color(0xffF9F9F1) - : Colors.black, + color: _repository.address == + selectedWallet!.address + ? const Color(0xffF9F9F1) + : Colors.black, fontStyle: FontStyle.italic), ), ), ), onTap: () async { - _derivation = _repository.derivation!; - _selectedId = _repository.id(); - - ChestData _newChestData = - chestBox.get(currentChest)!; - _newChestData.defaultWallet = _repository.number; - await chestBox.put(currentChest, _newChestData); - - _sub.setCurrentWallet(_repository.address!); + selectedWallet = _repository; _myWalletProvider.rebuildWidget(); - _walletViewProvider.reload(); - _sub.reload(); }, ) ]), diff --git a/lib/screens/myWallets/wallet_options.dart b/lib/screens/myWallets/wallet_options.dart index 05346fc407640cf865d3395e647b6f83263e51d5..4ef5b1b239644d92f4394ba1224c772a73be9e12 100644 --- a/lib/screens/myWallets/wallet_options.dart +++ b/lib/screens/myWallets/wallet_options.dart @@ -2,7 +2,6 @@ import 'dart:async'; import 'dart:io'; import 'package:flutter/material.dart'; import 'package:gecko/globals.dart'; -import 'package:gecko/models/chest_data.dart'; import 'package:gecko/providers/home.dart'; import 'package:gecko/providers/my_wallets.dart'; import 'package:gecko/models/wallet_data.dart'; @@ -365,10 +364,7 @@ class WalletOptions extends StatelessWidget { onTap: !walletProvider.isDefaultWallet ? () async { defaultWallet = wallet; - ChestData _newChestData = chestBox.get(_currentChest)!; - _newChestData.defaultWallet = wallet.number; - await chestBox.put(_currentChest, _newChestData); - _sub.setCurrentWallet(wallet.address!); + await _sub.setCurrentWallet(wallet); _myWalletProvider.readAllWallets(_currentChest); _myWalletProvider.rebuildWidget(); } diff --git a/lib/screens/myWallets/wallets_home.dart b/lib/screens/myWallets/wallets_home.dart index cd08c67bd8c7de6a8947ce5a433e50dacd8f09af..c67954edeb620ba396de8650486e952ccb03bea2 100644 --- a/lib/screens/myWallets/wallets_home.dart +++ b/lib/screens/myWallets/wallets_home.dart @@ -5,7 +5,6 @@ import 'package:gecko/globals.dart'; import 'package:gecko/models/chest_data.dart'; import 'package:gecko/providers/home.dart'; import 'package:gecko/providers/my_wallets.dart'; -import 'package:gecko/models/queries.dart'; import 'package:gecko/models/wallet_data.dart'; import 'package:flutter/material.dart'; import 'package:gecko/providers/wallet_options.dart'; @@ -13,7 +12,6 @@ import 'package:gecko/screens/common_elements.dart'; import 'package:gecko/screens/myWallets/chest_options.dart'; import 'package:gecko/screens/myWallets/choose_chest.dart'; import 'package:gecko/screens/myWallets/wallet_options.dart'; -import 'package:graphql_flutter/graphql_flutter.dart'; import 'package:provider/provider.dart'; class WalletsHome extends StatelessWidget { @@ -253,7 +251,7 @@ class WalletsHome extends StatelessWidget { bottom: Radius.circular(12))), // contentPadding: const EdgeInsets.only(left: 7.0), tileColor: - _repository.id()[1] == defaultWallet!.id()[1] + _repository.id()[1] == defaultWallet.id()[1] ? orangeC : const Color(0xffFFD58D), // leading: Text('IMAGE'), diff --git a/lib/screens/wallet_view.dart b/lib/screens/wallet_view.dart index b5cefa0218cd3ba664e1daac91b2b693c2704afc..ceeb978b0d88bc0fc7b43aaff22cce4adfec3559 100644 --- a/lib/screens/wallet_view.dart +++ b/lib/screens/wallet_view.dart @@ -37,7 +37,7 @@ class WalletViewScreen extends StatelessWidget { MyWalletsProvider _myWalletProvider = Provider.of<MyWalletsProvider>(context, listen: false); WalletData? defaultWallet = _myWalletProvider.getDefaultWallet(); - _sub.setCurrentWallet(defaultWallet!.address!); + _sub.setCurrentWallet(defaultWallet!); return Scaffold( resizeToAvoidBottomInset: true, @@ -102,8 +102,10 @@ class WalletViewScreen extends StatelessWidget { ), ]), Consumer<SubstrateSdk>(builder: (context, _sub, _) { + WalletData? _defaultWallet = + _myWalletProvider.getDefaultWallet(); return FutureBuilder( - future: _sub.isMember(defaultWallet.address!), + future: _sub.isMember(_defaultWallet!.address!), builder: (context, AsyncSnapshot<bool?> snapshot) { return Visibility( visible: (snapshot.data ?? false), @@ -128,7 +130,7 @@ class WalletViewScreen extends StatelessWidget { MaterialPageRoute( builder: (context) { return UnlockingWallet( - wallet: defaultWallet, + wallet: _defaultWallet, action: "cert"); }, ), @@ -259,8 +261,6 @@ class WalletViewScreen extends StatelessWidget { bool canValidate = false; - _walletViewProvider.outputPubkey.text = pubkey!; - showModalBottomSheet<void>( shape: const RoundedRectangleBorder( borderRadius: BorderRadius.only( diff --git a/pubspec.yaml b/pubspec.yaml index 21c7e01f95701c1ff179b7f8106b40454b60e1cc..d6ed34070bd1cf2908d8106d7af471a7c3f7e9f9 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -5,7 +5,7 @@ description: Pay with G1. # pub.dev using `pub publish`. This is preferred for private packages. publish_to: 'none' # Remove this line if you wish to publish to pub.dev -version: 0.0.7+1 +version: 0.0.7+2 environment: sdk: '>=2.12.0 <3.0.0'