diff --git a/assets/avatars/0.png b/assets/avatars/0.png index 452efff..47e563e 100755 Binary files a/assets/avatars/0.png and b/assets/avatars/0.png differ diff --git a/assets/avatars/3.png b/assets/avatars/3.png index 47e563e..452efff 100755 Binary files a/assets/avatars/3.png and b/assets/avatars/3.png differ diff --git a/lib/globals.dart b/lib/globals.dart index 1b3913c..4f3d9c2 100644 --- a/lib/globals.dart +++ b/lib/globals.dart @@ -8,7 +8,7 @@ import 'package:logger/logger.dart'; import 'package:shared_preferences/shared_preferences.dart'; // Version of box data -const int dataVersion = 2; +const int dataVersion = 3; // Files paths Directory? appPath; diff --git a/lib/providers/home.dart b/lib/providers/home.dart index 0b52d94..2bbff48 100644 --- a/lib/providers/home.dart +++ b/lib/providers/home.dart @@ -26,6 +26,7 @@ class HomeProvider with ChangeNotifier { Widget appBarTitle = Text('Ğecko', style: TextStyle(color: Colors.grey[850])); Widget appBarExplorer = Text('Explorateur', style: TextStyle(color: Colors.grey[850])); + String homeMessage = "y'a pas de lézard ;-)"; Future initHive() async { late Directory hivePath; @@ -71,6 +72,15 @@ class HomeProvider with ChangeNotifier { return version + '+' + buildNumber; } + Future changeMessage(String newMessage, int seconds) async { + final oldMessage = homeMessage; + homeMessage = newMessage; + notifyListeners(); + await Future.delayed(Duration(seconds: seconds)); + homeMessage = oldMessage; + notifyListeners(); + } + Future getValidEndpoints() async { await configBox.delete('endpoint'); diff --git a/lib/providers/my_wallets.dart b/lib/providers/my_wallets.dart index 2ba8566..6c9600e 100644 --- a/lib/providers/my_wallets.dart +++ b/lib/providers/my_wallets.dart @@ -41,7 +41,7 @@ class MyWalletsProvider with ChangeNotifier { return listWallets; } - WalletData? getWalletData(List _id) { + WalletData? getWalletDataById(List _id) { if (_id.isEmpty) return WalletData(); int? _chest = _id[0]; int? _nbr = _id[1]; @@ -57,13 +57,26 @@ class MyWalletsProvider with ChangeNotifier { return _targetedWallet; } + WalletData? getWalletDataByAddress(String address) { + WalletData? _targetedWallet; + + walletBox.toMap().forEach((key, value) { + if (value.address == address) { + _targetedWallet = value; + return; + } + }); + + return _targetedWallet; + } + WalletData? getDefaultWallet([int? chest]) { if (chestBox.isEmpty) { return WalletData(chest: 0, number: 0); } else { chest ??= getCurrentChest(); int? defaultWalletNumber = chestBox.get(chest)!.defaultWallet; - return getWalletData([chest, defaultWalletNumber]); + return getWalletDataById([chest, defaultWalletNumber]); } } diff --git a/lib/providers/substrate_sdk.dart b/lib/providers/substrate_sdk.dart index 9ab49c1..e25ae05 100644 --- a/lib/providers/substrate_sdk.dart +++ b/lib/providers/substrate_sdk.dart @@ -5,6 +5,7 @@ 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:gecko/providers/home.dart'; import 'package:polkawallet_sdk/api/apiKeyring.dart'; import 'package:polkawallet_sdk/api/types/networkParams.dart'; import 'package:polkawallet_sdk/api/types/txInfoData.dart'; @@ -46,6 +47,7 @@ class SubstrateSdk with ChangeNotifier { Future connectNode(BuildContext ctx) async { List node = []; + HomeProvider _homeProvider = Provider.of(ctx, listen: false); for (String _endpoint in configBox.get('endpoint')) { final n = NetworkParams(); @@ -98,12 +100,14 @@ class SubstrateSdk with ChangeNotifier { notifyListeners(); }); notifyListeners(); - snackNode(ctx, true); + _homeProvider.changeMessage('Vous êtes bien connecté', 3); + // snackNode(ctx, true); } else { nodeConnected = false; debugConnection = res.toString(); notifyListeners(); - snackNode(ctx, false); + _homeProvider.changeMessage('Vous êtes pas connecté', 3); + // snackNode(ctx, false); } log.d(sdk.api.connectedNode?.endpoint); diff --git a/lib/providers/wallet_options.dart b/lib/providers/wallet_options.dart index 02aeef8..0f5d531 100644 --- a/lib/providers/wallet_options.dart +++ b/lib/providers/wallet_options.dart @@ -31,7 +31,7 @@ class WalletOptionsProvider with ChangeNotifier { {required bool isCesium}) async { MyWalletsProvider myWalletClass = MyWalletsProvider(); - WalletData _walletTarget = myWalletClass.getWalletData(_walletID)!; + WalletData _walletTarget = myWalletClass.getWalletDataById(_walletID)!; _walletTarget.name = _newName; await walletBox.put(_walletTarget.key, _walletTarget); @@ -214,6 +214,9 @@ class WalletOptionsProvider with ChangeNotifier { TextButton( child: const Text("Valider"), onPressed: () async { + final _wallet = + _myWalletProvider.getWalletDataByAddress(address.text); + await _sub.setCurrentWallet(_wallet!); _sub.confirmIdentity(_walletOptions.address.text, idtyName.text, _myWalletProvider.pinCode); Navigator.pop(context); diff --git a/lib/screens/home.dart b/lib/screens/home.dart index 55bc56a..afaa3b2 100644 --- a/lib/screens/home.dart +++ b/lib/screens/home.dart @@ -2,6 +2,7 @@ import 'package:bubble/bubble.dart'; import 'package:gecko/globals.dart'; import 'package:gecko/models/stateful_wrapper.dart'; import 'package:gecko/providers/chest_provider.dart'; +import 'package:gecko/providers/home.dart'; import 'package:gecko/providers/substrate_sdk.dart'; import 'package:gecko/providers/wallets_profiles.dart'; import 'package:flutter/material.dart'; @@ -23,7 +24,6 @@ class HomeScreen extends StatelessWidget { @override Widget build(BuildContext context) { SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]); - // HomeProvider _homeProvider = Provider.of(context); MyWalletsProvider _myWalletProvider = Provider.of(context); Provider.of(context); @@ -103,6 +103,7 @@ class HomeScreen extends StatelessWidget { WidgetsBinding.instance.addPostFrameCallback((_) async { if (!_sub.sdkReady && !_sub.sdkLoading) await _sub.initApi(); if (_sub.sdkReady && !_sub.nodeConnected) { + // Check if versionData non compatible, drop everything if (walletBox.isNotEmpty && walletBox.getAt(0)!.version! < dataVersion) { await infoPopup(context, @@ -185,31 +186,32 @@ Widget geckHome(context) { ]), Padding( padding: EdgeInsets.only(top: 15 * ratio), - child: Row( - mainAxisAlignment: MainAxisAlignment.center, - children: const [ - Text( - "y'a pas de lézard ;-)", - textAlign: TextAlign.center, - style: TextStyle( - color: Colors.white, - fontSize: 24, - fontWeight: FontWeight.w700, - shadows: [ - Shadow( - offset: Offset(0, 0), - blurRadius: 20, - color: Colors.black, - ), - Shadow( - offset: Offset(0, 0), - blurRadius: 20, - color: Colors.black, - ), - ], - ), + child: + Row(mainAxisAlignment: MainAxisAlignment.center, children: [ + Consumer(builder: (context, _homeP, _) { + return Text( + _homeP.homeMessage, + textAlign: TextAlign.center, + style: const TextStyle( + color: Colors.white, + fontSize: 24, + fontWeight: FontWeight.w700, + shadows: [ + Shadow( + offset: Offset(0, 0), + blurRadius: 20, + color: Colors.black, + ), + Shadow( + offset: Offset(0, 0), + blurRadius: 20, + color: Colors.black, + ), + ], ), - ]), + ); + }), + ]), ), const SizedBox(height: 15), Expanded( diff --git a/lib/screens/myWallets/wallet_options.dart b/lib/screens/myWallets/wallet_options.dart index a940968..fa8f0eb 100644 --- a/lib/screens/myWallets/wallet_options.dart +++ b/lib/screens/myWallets/wallet_options.dart @@ -126,7 +126,7 @@ class WalletOptions extends StatelessWidget { historyWidget( context, _historyProvider, walletProvider), SizedBox(height: 12 * ratio), - setDefaultWallet(context, walletProvider, + setDefaultWalletWidget(context, walletProvider, _myWalletProvider, _walletOptions, _currentChest), SizedBox(height: 17 * ratio), if (!walletProvider.isDefaultWallet) @@ -349,25 +349,20 @@ class WalletOptions extends StatelessWidget { ); } - Widget setDefaultWallet( + Widget setDefaultWalletWidget( BuildContext context, WalletOptionsProvider walletProvider, MyWalletsProvider _myWalletProvider, WalletOptionsProvider _walletOptions, int _currentChest) { WalletData defaultWallet = _myWalletProvider.getDefaultWallet()!; - SubstrateSdk _sub = Provider.of(context, listen: false); - _walletOptions.isDefaultWallet = (defaultWallet.number == wallet.id()[1]); return InkWell( key: const Key('setDefaultWallet'), onTap: !walletProvider.isDefaultWallet ? () async { - defaultWallet = wallet; - await _sub.setCurrentWallet(wallet); - _myWalletProvider.readAllWallets(_currentChest); - _myWalletProvider.rebuildWidget(); + await setDefaultWallet(context, _currentChest); } : null, child: SizedBox( @@ -397,6 +392,18 @@ class WalletOptions extends StatelessWidget { ); } + Future setDefaultWallet(BuildContext context, int _currentChest) async { + SubstrateSdk _sub = Provider.of(context, listen: false); + MyWalletsProvider _myWalletProvider = + Provider.of(context, listen: false); + + // WalletData defaultWallet = _myWalletProvider.getDefaultWallet()!; + // defaultWallet = wallet; + await _sub.setCurrentWallet(wallet); + _myWalletProvider.readAllWallets(_currentChest); + _myWalletProvider.rebuildWidget(); + } + Widget deleteWallet( BuildContext context, WalletOptionsProvider walletProvider, diff --git a/lib/screens/settings.dart b/lib/screens/settings.dart index d58fbda..e5c780f 100644 --- a/lib/screens/settings.dart +++ b/lib/screens/settings.dart @@ -4,10 +4,7 @@ import 'package:flutter/services.dart'; import 'package:gecko/providers/my_wallets.dart'; import 'package:gecko/providers/substrate_sdk.dart'; import 'dart:io'; -// import 'package:gecko/screens/myWallets/import_cesium_wallet.dart'; import 'package:gecko/globals.dart'; -import 'package:gecko/screens/myWallets/restore_chest.dart'; -import 'package:gecko/screens/onBoarding/5.dart'; import 'package:provider/provider.dart'; // ignore: must_be_immutable @@ -51,80 +48,42 @@ class SettingsScreen extends StatelessWidget { children: [ const SizedBox(height: 60), Row(children: [ - Text(' Noeud $currencyName :'), - const SizedBox(width: 20), - SizedBox( - width: 200, - height: 50, - child: TextField( - controller: _endpointController, - autocorrect: false, - ), - ), - const Spacer(), Consumer(builder: (context, _sub, _) { - return _sub.isLoadingEndpoint - ? CircularProgressIndicator(color: orangeC) - : IconButton( - icon: Icon( - Icons.send, - color: orangeC, - size: 40, - ), - onPressed: () async { - configBox.put('endpoint', [_endpointController.text]); - await _sub.connectNode(context); - }); + return Expanded( + child: Row(children: [ + Text(' Noeud $currencyName :'), + const Spacer(), + Icon(_sub.nodeConnected ? Icons.check : Icons.close), + const Spacer(), + SizedBox( + width: 200, + height: 50, + child: TextField( + controller: _endpointController, + autocorrect: false, + ), + ), + const Spacer(flex: 5), + _sub.isLoadingEndpoint + ? CircularProgressIndicator(color: orangeC) + : IconButton( + icon: Icon( + Icons.send, + color: orangeC, + size: 40, + ), + onPressed: () async { + configBox + .put('endpoint', [_endpointController.text]); + await _sub.connectNode(context); + }), + const Spacer(flex: 8), + ]), + ); }), - const Spacer(), ]), - SizedBox(height: isTall ? 50 : 20), - SizedBox( - height: buttonHigh, - width: buttonWidth, - child: ElevatedButton( - key: const Key('generateKeychain'), - style: ElevatedButton.styleFrom( - elevation: 5, - primary: yellowC, // background - onPrimary: Colors.black, // foreground - ), - onPressed: () => Navigator.push( - context, - MaterialPageRoute(builder: (context) { - return const OnboardingStepFive(skipIntro: true); - }), - ), - child: const Text( - "Générer un coffre", - style: TextStyle(fontSize: fontSize), - ), - ), - ), - const SizedBox(height: 20), - SizedBox( - height: buttonHigh, - width: buttonWidth, - child: ElevatedButton( - key: const Key('generateKeychain'), - style: ElevatedButton.styleFrom( - elevation: 5, - primary: yellowC, // background - onPrimary: Colors.black, // foreground - ), - onPressed: () => Navigator.push( - context, - MaterialPageRoute(builder: (context) { - return const RestoreChest(skipIntro: true); - }), - ), - child: const Text( - "Restaurer un coffre", - style: TextStyle(fontSize: fontSize), - ), - ), - ), - const SizedBox(height: 25), + // SizedBox(height: isTall ? 80 : 120), + const Spacer(), SizedBox( height: buttonHigh, width: buttonWidth, @@ -138,14 +97,16 @@ class SettingsScreen extends StatelessWidget { child: const Text( 'Oublier tous mes coffres', style: TextStyle( - fontSize: fontSize + 3, + fontSize: fontSize + 4, color: Color(0xffD80000), - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, ), ), ), ), ), + // const Spacer(), + SizedBox(height: isTall ? 90 : 60), ]), ); } diff --git a/pubspec.yaml b/pubspec.yaml index fac9f3e..d9c8502 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+3 +version: 0.0.7+4 environment: sdk: '>=2.12.0 <3.0.0'