From f5c14e8924b56cc62366c7bd7c71ac2871b299bf Mon Sep 17 00:00:00 2001 From: poka Date: Sat, 28 May 2022 21:15:47 +0200 Subject: [PATCH] fix: refresh bugs --- lib/providers/home.dart | 6 +- lib/providers/substrate_sdk.dart | 29 +++++++-- lib/providers/wallets_profiles.dart | 14 ----- lib/screens/myWallets/choose_wallet.dart | 77 +++++++++++------------ lib/screens/myWallets/wallet_options.dart | 6 +- lib/screens/myWallets/wallets_home.dart | 4 +- lib/screens/wallet_view.dart | 10 +-- pubspec.yaml | 2 +- 8 files changed, 71 insertions(+), 77 deletions(-) diff --git a/lib/providers/home.dart b/lib/providers/home.dart index d43e581..5a54256 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 367ecfd..ef592c4 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 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 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 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 564c20f..70c9bd1 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 cdd6000..d6c5a80 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? _selectedId; + WalletData? selectedWallet; @override Widget build(BuildContext context) { SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]); + SubstrateSdk _sub = Provider.of(context, listen: false); - // HomeProvider _homeProvider = Provider.of(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(context); - final bool isWalletsExists = _myWalletProvider.checkIfWalletExist(); - SubstrateSdk _sub = Provider.of(context, listen: false); - WalletsProfilesProvider _walletViewProvider = - Provider.of(context, listen: false); + // SubstrateSdk _sub = Provider.of(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 05346fc..4ef5b1b 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 cd08c67..c67954e 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 b5cefa0..ceeb978 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(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(builder: (context, _sub, _) { + WalletData? _defaultWallet = + _myWalletProvider.getDefaultWallet(); return FutureBuilder( - future: _sub.isMember(defaultWallet.address!), + future: _sub.isMember(_defaultWallet!.address!), builder: (context, AsyncSnapshot 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( shape: const RoundedRectangleBorder( borderRadius: BorderRadius.only( diff --git a/pubspec.yaml b/pubspec.yaml index 21c7e01..d6ed340 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'