diff --git a/lib/models/generateWallets.dart b/lib/models/generateWallets.dart index 842fd5f..77f1431 100644 --- a/lib/models/generateWallets.dart +++ b/lib/models/generateWallets.dart @@ -41,7 +41,12 @@ class GenerateWalletsProvider with ChangeNotifier { Future storeWallet(NewWallet wallet, String _name, BuildContext context, {bool isHD = false}) async { - int nbrWallet = 0; + int nbrWallet; + if (isHD) { + nbrWallet = 0; + } else { + nbrWallet = 1; + } Directory walletNbrDirectory; do { nbrWallet++; @@ -65,6 +70,7 @@ class GenerateWalletsProvider with ChangeNotifier { await configFile .writeAsString('$nbrWallet:$_name:$_derivationNbr:$_pubkey'); + Navigator.pop(context, true); } else { final int _derivationNbr = -1; String _pubkey = await DubpRust.getDewifPublicKey( @@ -76,10 +82,6 @@ class GenerateWalletsProvider with ChangeNotifier { } Navigator.pop(context, true); - if (isHD) { - Navigator.pop(context, true); - } - // notifyListeners(); return _name; } @@ -182,14 +184,17 @@ class GenerateWalletsProvider with ChangeNotifier { return this.actualWallet; } - Future changePinCode() async { + Future changePinCode({bool reload}) async { actualWallet = await DubpRust.changeDewifPin( dewif: actualWallet.dewif, oldPin: actualWallet.pin, ); pin.text = actualWallet.pin; - notifyListeners(); + isPinChanged = true; + if (reload) { + notifyListeners(); + } } Future printWallet(String _title) async { @@ -238,8 +243,6 @@ class GenerateWalletsProvider with ChangeNotifier { salt: _cesiumID, password: _cesiumPWD); cesiumPubkey.text = _walletPubkey; - // changePinCode(); - // notifyListeners(); print(_walletPubkey); } @@ -250,14 +253,14 @@ class GenerateWalletsProvider with ChangeNotifier { omission: "...", position: TruncatePosition.end); await storeWallet( actualWallet, 'Portefeuille Cesium - $shortPubkey', context); - print('taaaaaaaaaaaaaaaaa'); - print(actualWallet.pin); cesiumID.text = ''; cesiumPWD.text = ''; cesiumPubkey.text = ''; canImport = false; isPinChanged = false; pin.text = ''; + isCesiumIDVisible = false; + isCesiumPWDVisible = false; notifyListeners(); } @@ -271,6 +274,13 @@ class GenerateWalletsProvider with ChangeNotifier { notifyListeners(); } + void showPinIfEmpty() { + if (!isPinChanged) { + changePinCode(reload: true); + isPinChanged = true; + } + } + void reloadBuild() { notifyListeners(); } diff --git a/lib/screens/myWallets/generateWallets.dart b/lib/screens/myWallets/generateWallets.dart index 6ce90a5..5333173 100644 --- a/lib/screens/myWallets/generateWallets.dart +++ b/lib/screens/myWallets/generateWallets.dart @@ -83,7 +83,8 @@ class GenerateWalletsScreen extends StatelessWidget { icon: Icon(Icons.replay), color: Color(0xffD28928), onPressed: () { - _generateWalletProvider.changePinCode(); + _generateWalletProvider.changePinCode( + reload: false); }, ), ], diff --git a/lib/screens/myWallets/importWallet.dart b/lib/screens/myWallets/importWallet.dart index cd0216b..2a548af 100644 --- a/lib/screens/myWallets/importWallet.dart +++ b/lib/screens/myWallets/importWallet.dart @@ -1,7 +1,9 @@ import 'dart:async'; +import 'package:flutter/services.dart'; import 'package:gecko/models/generateWallets.dart'; import 'package:flutter/material.dart'; import 'package:gecko/models/myWallets.dart'; +import 'package:gecko/models/walletOptions.dart'; import 'package:provider/provider.dart'; class ImportWalletScreen extends StatelessWidget { @@ -13,6 +15,10 @@ class ImportWalletScreen extends StatelessWidget { Provider.of(context); MyWalletsProvider _myWalletProvider = Provider.of(context); + WalletOptionsProvider _walletOptions = + Provider.of(context); + + _generateWalletProvider.showPinIfEmpty(); return WillPopScope( onWillPop: () { @@ -22,6 +28,9 @@ class ImportWalletScreen extends StatelessWidget { _generateWalletProvider.pin.text = ''; _generateWalletProvider.canImport = false; _generateWalletProvider.isPinChanged = false; + _generateWalletProvider.isCesiumIDVisible = false; + _generateWalletProvider.isCesiumPWDVisible = false; + _generateWalletProvider.reloadBuild(); return Future.value(true); }, child: Scaffold( @@ -35,6 +44,9 @@ class ImportWalletScreen extends StatelessWidget { _generateWalletProvider.pin.text = ''; _generateWalletProvider.canImport = false; _generateWalletProvider.isPinChanged = false; + _generateWalletProvider.isCesiumIDVisible = false; + _generateWalletProvider.isCesiumPWDVisible = false; + _generateWalletProvider.reloadBuild(); Navigator.of(context).pop(); }), title: SizedBox( @@ -122,14 +134,21 @@ class ImportWalletScreen extends StatelessWidget { ), ), SizedBox(height: 15), - Text( - _generateWalletProvider.cesiumPubkey.text, - style: TextStyle( - fontSize: 14.0, - color: Colors.black, - fontWeight: FontWeight.bold, - fontFamily: 'Monospace'), - ), + GestureDetector( + onTap: () { + Clipboard.setData(ClipboardData( + text: _generateWalletProvider + .cesiumPubkey.text)); + _walletOptions.snackCopyKey(ctx); + }, + child: Text( + _generateWalletProvider.cesiumPubkey.text, + style: TextStyle( + fontSize: 14.0, + color: Colors.black, + fontWeight: FontWeight.bold, + fontFamily: 'Monospace'), + )), SizedBox(height: 20), toolTips(_toolTipSecret, 'Code secret:', "Retenez bien votre code secret, il vous sera demandé à chaque paiement, ainsi que pour configurer votre portefeuille"), @@ -151,8 +170,8 @@ class ImportWalletScreen extends StatelessWidget { icon: Icon(Icons.replay), color: Color(0xffD28928), onPressed: () { - _generateWalletProvider.changePinCode(); - _generateWalletProvider.isPinChanged = true; + _generateWalletProvider.changePinCode( + reload: true); }, ), ], diff --git a/lib/screens/settings.dart b/lib/screens/settings.dart index 5d59521..ce0091b 100644 --- a/lib/screens/settings.dart +++ b/lib/screens/settings.dart @@ -1,8 +1,11 @@ import 'package:flutter/material.dart'; import 'package:dubp/dubp.dart'; import 'package:gecko/models/myWallets.dart'; +import 'package:gecko/screens/myWallets/generateWallets.dart'; import 'dart:io'; +import 'package:gecko/screens/myWallets/importWallet.dart'; + // ignore: must_be_immutable class SettingsScreen extends StatelessWidget { String generatedMnemonic; @@ -28,18 +31,56 @@ class SettingsScreen extends StatelessWidget { child: Text('Paramètres'), )), body: Column(children: [ + SizedBox(height: 40), + SizedBox( + height: 50, + width: 500, + child: ElevatedButton( + style: ElevatedButton.styleFrom( + elevation: 5, + primary: Color(0xFFFFCA6F), // background + onPrimary: Colors.black, // foreground + ), + onPressed: () => Navigator.push( + context, + MaterialPageRoute(builder: (context) { + return ImportWalletScreen(); + }), + ).then((value) => { + if (value == true) {Navigator.pop(context)} + }), + child: Text("Importer un portefeuille Cesium", + style: TextStyle(fontSize: 15)))), SizedBox(height: 20), + SizedBox( + height: 50, + width: 500, + child: ElevatedButton( + style: ElevatedButton.styleFrom( + elevation: 5, + primary: Color(0xFFFFCA6F), // background + onPrimary: Colors.black, // foreground + ), + onPressed: () => Navigator.push( + context, + MaterialPageRoute(builder: (context) { + return GenerateWalletsScreen(); + }), + ).then((value) => { + if (value == true) {Navigator.pop(context)} + }), + child: Text("Générer un nouveau trousseau", + style: TextStyle(fontSize: 15)))), Expanded( child: Align( alignment: Alignment.bottomCenter, child: SizedBox( height: 100, - width: 1000, + width: 500, child: ElevatedButton( style: ElevatedButton.styleFrom( elevation: 5, - primary: Colors - .redAccent, //Color(0xffFFD68E), // background + primary: Colors.redAccent, // background onPrimary: Colors.black, // foreground ), onPressed: () async => { diff --git a/pubspec.yaml b/pubspec.yaml index 3d54a60..8b28242 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -5,7 +5,7 @@ description: A new Flutter project. # 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.1+4 +version: 0.0.1+5 environment: sdk: ">=2.7.0 <3.0.0"