diff --git a/assets/avatars/trunc/0.png b/assets/avatars/trunc/0.png deleted file mode 100755 index c379552..0000000 Binary files a/assets/avatars/trunc/0.png and /dev/null differ diff --git a/assets/avatars/trunc/1.png b/assets/avatars/trunc/1.png deleted file mode 100755 index 49023c9..0000000 Binary files a/assets/avatars/trunc/1.png and /dev/null differ diff --git a/assets/avatars/trunc/2.png b/assets/avatars/trunc/2.png deleted file mode 100755 index f9546ef..0000000 Binary files a/assets/avatars/trunc/2.png and /dev/null differ diff --git a/lib/globals.dart b/lib/globals.dart index 0f54281..abbaf47 100644 --- a/lib/globals.dart +++ b/lib/globals.dart @@ -14,6 +14,7 @@ late String appVersion; late SharedPreferences prefs; late String endPointGVA; const int pinLength = 5; +const String appLang = 'french'; late Box walletBox; late Box chestBox; diff --git a/lib/providers/cesium_plus.dart b/lib/providers/cesium_plus.dart index f52e811..72c35cc 100644 --- a/lib/providers/cesium_plus.dart +++ b/lib/providers/cesium_plus.dart @@ -60,11 +60,11 @@ class CesiumPlusProvider with ChangeNotifier { return [podRequest, queryGetAvatar, headers]; } - Future getName(String? _pubkey) async { + Future getName(String? _pubkey) async { String? _name; if (g1WalletsBox.get(_pubkey)!.csName != null) { - return g1WalletsBox.get(_pubkey)!.csName; + return g1WalletsBox.get(_pubkey)!.csName!; } List queryOptions = await _buildQuery(_pubkey); @@ -97,6 +97,7 @@ class CesiumPlusProvider with ChangeNotifier { } _name = response.data['hits']['hits'][0]['_source']['title']; + _name ??= ''; g1WalletsBox.get(_pubkey)!.csName = _name; return _name; diff --git a/lib/providers/generate_wallets.dart b/lib/providers/generate_wallets.dart index 91cdf8b..43a389a 100644 --- a/lib/providers/generate_wallets.dart +++ b/lib/providers/generate_wallets.dart @@ -157,7 +157,7 @@ class GenerateWalletsProvider with ChangeNotifier { try { actualWallet = await Dewif().generateDewif( generatedMnemonic, randomSecretCode(pinLength), - lang: 'french'); + lang: appLang); } catch (e) { log.e(e); } @@ -294,7 +294,7 @@ class GenerateWalletsProvider with ChangeNotifier { } List generateWordList() { - generatedMnemonic = generateMnemonic(lang: 'french'); + generatedMnemonic = generateMnemonic(lang: appLang); List _wordsList = []; String word; int _nbr = 1; @@ -333,8 +333,8 @@ class GenerateWalletsProvider with ChangeNotifier { cellController0.text = cellController1.text = cellController2.text = cellController3.text = cellController4.text = cellController5.text = cellController6.text = cellController7.text = cellController8.text = - cellController9.text = - cellController10.text = cellController11.text = ''; + cellController9.text = cellController10.text = + cellController11.text = ''; isFirstTimeSentenceComplete = true; notifyListeners(); } diff --git a/lib/providers/wallet_options.dart b/lib/providers/wallet_options.dart index c18f062..1056d7c 100644 --- a/lib/providers/wallet_options.dart +++ b/lib/providers/wallet_options.dart @@ -39,7 +39,7 @@ class WalletOptionsProvider with ChangeNotifier { } if (derivation != -1) { try { - final _wallet = HdWallet.fromDewif(_dewif!, _pin); + final _wallet = HdWallet.fromDewif(_dewif!, _pin, lang: appLang); pubkey.text = _wallet.getPubkey(derivation!); log.d(pubkey.text); notifyListeners(); @@ -66,15 +66,23 @@ class WalletOptionsProvider with ChangeNotifier { } String? readLocalWallet( - context, WalletData _wallet, String _pin, int _pinLenght) { + context, WalletData _wallet, String _pin, int _pinLenght, + {String? mnemonic}) { isWalletUnlock = false; + final String _localPubkey; + try { String? _localDewif = chestBox.get(_wallet.chest)!.dewif; - String _localPubkey; - if ((_localPubkey = _getPubkeyFromDewif( - _localDewif, _pin, _pinLenght, _wallet.derivation)) != - 'false') { + if (mnemonic == null) { + _localPubkey = _getPubkeyFromDewif( + _localDewif, _pin.toUpperCase(), _pinLenght, _wallet.derivation); + } else { + final _hdwallet = HdWallet.fromMnemonic(mnemonic); + _localPubkey = _hdwallet.getPubkey(_wallet.derivation!); + } + + if (_localPubkey != 'false') { pubkey.text = _localPubkey; isWalletUnlock = true; log.d(pubkey.text); diff --git a/lib/screens/history.dart b/lib/screens/history.dart index 315e733..9f95551 100644 --- a/lib/screens/history.dart +++ b/lib/screens/history.dart @@ -295,11 +295,11 @@ class HistoryScreen extends StatelessWidget with ChangeNotifier { ]); } if (_avatar.hasData) { - g1WalletsBox.get(repository[2])!.avatar = + g1WalletsBox.get(repository[2])?.avatar = _avatar.data; return ClipOval(child: _avatar.data); } else { - g1WalletsBox.get(repository[2])!.avatar = + g1WalletsBox.get(repository[2])?.avatar = _cesiumPlusProvider .defaultAvatar(repository[2]); return _cesiumPlusProvider @@ -308,7 +308,8 @@ class HistoryScreen extends StatelessWidget with ChangeNotifier { }) : ClipOval( child: Image( - image: g1WalletsBox.get(repository[2])!.avatar!.image, + image: + g1WalletsBox.get(repository[2])!.avatar!.image, height: _avatarSize, ), ), diff --git a/lib/screens/home.dart b/lib/screens/home.dart index 7f25c5a..3e84f6b 100644 --- a/lib/screens/home.dart +++ b/lib/screens/home.dart @@ -411,19 +411,21 @@ Widget welcomeHome(context) { ]), ), Expanded( - flex: 1, - child: Container( - decoration: BoxDecoration( - gradient: LinearGradient( - begin: Alignment.topCenter, - end: Alignment.bottomCenter, - colors: [ - Colors.transparent, - Colors.black.withOpacity(0.9), - ], - ), + flex: 1, + child: Container( + decoration: BoxDecoration( + gradient: LinearGradient( + begin: Alignment.topCenter, + end: Alignment.bottomCenter, + colors: [ + Colors.transparent, + Colors.black.withOpacity(0.9), + ], ), - child: Center( + ), + child: Center( + child: ConstrainedBox( + constraints: const BoxConstraints(maxWidth: 480), child: Column(children: [ const Spacer(), Row(children: [ @@ -505,7 +507,9 @@ Widget welcomeHome(context) { SizedBox(height: isTall ? 100 : 50) ]), ), - )) + ), + ), + ) ]), ); } diff --git a/lib/screens/myWallets/generate_wallets.dart b/lib/screens/myWallets/generate_wallets.dart index 17204d6..dde9a07 100644 --- a/lib/screens/myWallets/generate_wallets.dart +++ b/lib/screens/myWallets/generate_wallets.dart @@ -120,7 +120,7 @@ class GenerateFastChestScreen extends StatelessWidget { _generateWalletProvider .generatedMnemonic!, _generateWalletProvider.pin.text, - lang: 'french'); + lang: appLang); await Navigator.push( context, MaterialPageRoute(builder: (context) { diff --git a/lib/screens/myWallets/unlocking_wallet.dart b/lib/screens/myWallets/unlocking_wallet.dart index ba9b355..a5fb762 100644 --- a/lib/screens/myWallets/unlocking_wallet.dart +++ b/lib/screens/myWallets/unlocking_wallet.dart @@ -8,6 +8,7 @@ import 'package:gecko/providers/wallet_options.dart'; import 'package:flutter/material.dart'; import 'package:gecko/screens/myWallets/cesium_wallet_options.dart'; import 'package:gecko/screens/myWallets/choose_chest.dart'; +import 'package:gecko/screens/myWallets/wallets_home.dart'; import 'package:pin_code_fields/pin_code_fields.dart'; import 'package:provider/provider.dart'; import 'package:gecko/globals.dart'; @@ -223,8 +224,12 @@ class UnlockingWallet extends StatelessWidget { cesiumWallet: currentChest); }), ) - : Navigator.pushNamed( - formKey.currentContext!, '/mywallets'); + : Navigator.push( + context, + MaterialPageRoute(builder: (context) { + return const WalletsHome(); + }), + ); } else if (action == "pay") { resultPay = await _historyProvider.pay(context, _pin.toUpperCase()); diff --git a/lib/screens/myWallets/wallet_options.dart b/lib/screens/myWallets/wallet_options.dart index c7da2fb..e900297 100644 --- a/lib/screens/myWallets/wallet_options.dart +++ b/lib/screens/myWallets/wallet_options.dart @@ -27,8 +27,6 @@ class WalletOptions extends StatelessWidget { MyWalletsProvider _myWalletProvider = Provider.of(context); - - _walletOptions.pubkey.text = log.d(_walletOptions.pubkey.text); final int _currentChest = _myWalletProvider.getCurrentChest()!; @@ -39,10 +37,7 @@ class WalletOptions extends StatelessWidget { onWillPop: () { _walletOptions.isEditing = false; _walletOptions.isBalanceBlur = true; - Navigator.popUntil( - context, - ModalRoute.withName('/mywallets'), - ); + Navigator.pop(context); return Future.value(true); }, child: Scaffold( @@ -55,10 +50,7 @@ class WalletOptions extends StatelessWidget { onPressed: () { _walletOptions.isEditing = false; _walletOptions.isBalanceBlur = true; - Navigator.popUntil( - context, - ModalRoute.withName('/mywallets'), - ); + Navigator.pop(context); }), title: SizedBox( height: 22, @@ -88,6 +80,7 @@ class WalletOptions extends StatelessWidget { ], )), child: Row( + crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.spaceAround, children: [ const Spacer(), @@ -138,8 +131,7 @@ class WalletOptions extends StatelessWidget { children: [ InkWell( onTap: () async { - File newAvatar = - await (walletProvider.changeAvatar()); + File newAvatar = await (walletProvider.changeAvatar()); wallet.imageFile = newAvatar; walletProvider.reloadBuild(); }, @@ -155,10 +147,10 @@ class WalletOptions extends StatelessWidget { ), Positioned( right: 0, + top: 0, child: InkWell( onTap: () async { - File newAvatar = - await (walletProvider.changeAvatar()); + File newAvatar = await (walletProvider.changeAvatar()); wallet.imageFile = newAvatar; walletProvider.reloadBuild(); }, @@ -174,13 +166,6 @@ class WalletOptions extends StatelessWidget { Widget walletName(WalletOptionsProvider walletProvider, WalletOptionsProvider _walletOptions) { - int _nbrLinesName = 1; - _walletOptions.nameController.text.length >= 15 - ? _nbrLinesName = 2 - : _nbrLinesName = 1; - if (_walletOptions.nameController.text.length >= 26 && isTall) { - _nbrLinesName = 3; - } bool _isNewNameValid = false; if (_isNewNameValid == false) { _walletOptions.nameController.text = wallet.name!; @@ -197,7 +182,8 @@ class WalletOptions extends StatelessWidget { focusNode: walletProvider.walletNameFocus, enabled: walletProvider.isEditing, controller: walletProvider.nameController, - maxLines: _nbrLinesName, + minLines: 1, + maxLines: 3, textAlign: TextAlign.center, decoration: const InputDecoration( border: InputBorder.none, @@ -207,10 +193,10 @@ class WalletOptions extends StatelessWidget { contentPadding: EdgeInsets.all(15.0), ), style: TextStyle( - fontSize: isTall ? 27 : 23, - color: Colors.black, - fontWeight: FontWeight.w400, - fontFamily: 'Monospace'), + fontSize: isTall ? 27 : 23, + color: Colors.black, + fontWeight: FontWeight.w400, + ), ), Positioned( right: 0, @@ -253,7 +239,7 @@ class WalletOptions extends StatelessWidget { sigmaX: walletProvider.isBalanceBlur ? 6 : 0, sigmaY: walletProvider.isBalanceBlur ? 5 : 0), child: Text( - _balance.data.toString() + ' DU', + _balance.data.toString() + ' Ğ1', style: TextStyle( fontSize: isTall ? 20 : 18, ), diff --git a/lib/screens/myWallets/wallets_home.dart b/lib/screens/myWallets/wallets_home.dart index 6fbcad9..ede8c94 100644 --- a/lib/screens/myWallets/wallets_home.dart +++ b/lib/screens/myWallets/wallets_home.dart @@ -5,6 +5,7 @@ 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'; import 'package:gecko/screens/common_elements.dart'; import 'package:gecko/screens/myWallets/chest_options.dart'; import 'package:gecko/screens/myWallets/choose_chest.dart'; @@ -131,7 +132,8 @@ class WalletsHome extends StatelessWidget { Widget myWalletsTiles(BuildContext context) { MyWalletsProvider _myWalletProvider = Provider.of(context); - + WalletOptionsProvider _walletOptions = + Provider.of(context, listen: false); final bool isWalletsExists = _myWalletProvider.checkIfWalletExist(); if (!isWalletsExists) { @@ -175,6 +177,8 @@ class WalletsHome extends StatelessWidget { padding: const EdgeInsets.all(16), child: GestureDetector( onTap: () { + _walletOptions.readLocalWallet(context, _repository, + _myWalletProvider.pinCode, pinLength); Navigator.push( context, SmoothTransition( @@ -260,6 +264,11 @@ class WalletsHome extends StatelessWidget { ), // dense: true, onTap: () { + _walletOptions.readLocalWallet( + context, + _repository, + _myWalletProvider.pinCode, + pinLength); Navigator.push( context, SmoothTransition( diff --git a/lib/screens/onBoarding/12.dart b/lib/screens/onBoarding/12.dart index 0bedd13..3832702 100644 --- a/lib/screens/onBoarding/12.dart +++ b/lib/screens/onBoarding/12.dart @@ -120,16 +120,15 @@ class OnboardingStepFourteen extends StatelessWidget { NewWallet generatedWallet = await Dewif().generateDewif( _generateWalletProvider.generatedMnemonic!, _generateWalletProvider.pin.text, - lang: 'french'); + lang: appLang); await _generateWalletProvider.storeHDWChest( generatedWallet, 'Mon portefeuille courant', context); _myWalletProvider.readAllWallets(_currentChest); // scheduleMicrotask(() { - _walletOptions.reloadBuild(); - // _myWalletProvider.rebuildWidget(); + // _walletOptions.reloadBuild(); + _myWalletProvider.rebuildWidget(); // }); - _generateWalletProvider.generatedMnemonic = - _generateWalletProvider.pin.text = ''; + _generateWalletProvider.generatedMnemonic = ''; Navigator.push( context, FaderTransition( diff --git a/lib/screens/onBoarding/13_congratulations.dart b/lib/screens/onBoarding/13_congratulations.dart index 4428bdd..f7189c7 100644 --- a/lib/screens/onBoarding/13_congratulations.dart +++ b/lib/screens/onBoarding/13_congratulations.dart @@ -4,6 +4,7 @@ import 'package:flutter/services.dart'; import 'package:flutter/material.dart'; import 'package:gecko/globals.dart'; import 'package:gecko/screens/common_elements.dart'; +import 'package:gecko/screens/myWallets/wallets_home.dart'; // ignore: must_be_immutable class OnboardingStepFiveteen extends StatelessWidget { @@ -33,28 +34,32 @@ class OnboardingStepFiveteen extends StatelessWidget { height: isTall ? 400 : 300, ), Expanded( - child: Align( - alignment: Alignment.bottomCenter, - child: SizedBox( - width: 400, - height: 62, - child: ElevatedButton( - key: const Key('goWalletHome'), - style: ElevatedButton.styleFrom( - elevation: 5, - primary: orangeC, - onPrimary: Colors.white, // foreground - ), - onPressed: () { - Navigator.pushNamedAndRemoveUntil( - context, - '/mywallets', - ModalRoute.withName('/'), - ); - }, - child: const Text("Accéder à mes portefeuilles", - style: TextStyle(fontSize: 20))), - ))), + child: Align( + alignment: Alignment.bottomCenter, + child: SizedBox( + width: 400, + height: 62, + child: ElevatedButton( + key: const Key('goWalletHome'), + style: ElevatedButton.styleFrom( + elevation: 5, + primary: orangeC, + onPrimary: Colors.white, // foreground + ), + onPressed: () { + Navigator.pushAndRemoveUntil( + context, + MaterialPageRoute(builder: (context) { + return const WalletsHome(); + }), + ModalRoute.withName('/'), + ); + }, + child: const Text("Accéder à mes portefeuilles", + style: TextStyle(fontSize: 20))), + ), + ), + ), const SizedBox(height: 80), ]), )); diff --git a/lib/screens/wallet_view.dart b/lib/screens/wallet_view.dart index f9db775..c6d25ec 100644 --- a/lib/screens/wallet_view.dart +++ b/lib/screens/wallet_view.dart @@ -248,7 +248,7 @@ class WalletViewScreen extends StatelessWidget { // onChanged: (v) => _searchProvider.rebuildWidget(), decoration: InputDecoration( hintText: '0.00', - suffix: const Text('DU/Ğ1'), + suffix: const Text('Ğ1'), filled: true, fillColor: Colors.transparent, // border: OutlineInputBorder( diff --git a/pubspec.lock b/pubspec.lock index b5a2db7..7ca48ec 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -301,7 +301,7 @@ packages: name: durt url: "https://pub.dartlang.org" source: hosted - version: "0.1.5" + version: "0.1.5+2" fake_async: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index c6b55fb..4518579 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.4+5 +version: 0.0.4+6 environment: sdk: '>=2.12.0 <3.0.0' @@ -62,7 +62,7 @@ dependencies: pull_to_refresh: ^2.0.0 dio: ^4.0.4 desktop_window: ^0.4.0 - durt: ^0.1.5 + durt: ^0.1.5+2 package_info_plus: ^1.3.0 flutter_icons: