diff --git a/lib/models/walletOptions.dart b/lib/models/walletOptions.dart index 2e16e70..01aeb22 100644 --- a/lib/models/walletOptions.dart +++ b/lib/models/walletOptions.dart @@ -89,6 +89,21 @@ class WalletOptionsProvider with ChangeNotifier { } } + Future checkPinOK(String _createdDewif, String _pin, int _pinLenght) async { + isWalletUnlock = false; + try { + if (await _getPubkeyFromDewif(_createdDewif, _pin, _pinLenght, 3) != + 'false') { + return true; + } else { + throw false; + } + } catch (e) { + print('ERROR READING FILE: $e'); + return false; + } + } + int getPinLenght(_walletNbr) { File _walletFile = File('${walletsDirectory.path}/$_walletNbr/wallet.dewif'); diff --git a/lib/screens/onBoarding/13_stepThirteen.dart b/lib/screens/onBoarding/13_stepThirteen.dart index 2c87494..2d5c73f 100644 --- a/lib/screens/onBoarding/13_stepThirteen.dart +++ b/lib/screens/onBoarding/13_stepThirteen.dart @@ -21,7 +21,6 @@ class OnboardingStepThirteen extends StatelessWidget { // Provider.of(context); CommonElements common = CommonElements(); _generateWalletProvider.pin.text = ''; - // _generateWalletProvider.changePinCode(reload: false); return Scaffold( extendBodyBehindAppBar: true, @@ -85,9 +84,9 @@ class OnboardingStepThirteen extends StatelessWidget { primary: Color(0xffFFD58D), onPrimary: Colors.black, // foreground ), - onPressed: () { - _generateWalletProvider.changePinCode( - reload: false); + onPressed: () async { + generatedWallet = await _generateWalletProvider + .changePinCode(reload: false); }, child: Text("Choisir un autre code secret", style: TextStyle(fontSize: 20))), @@ -103,17 +102,13 @@ class OnboardingStepThirteen extends StatelessWidget { onPrimary: Colors.white, // foreground ), onPressed: () async { - // TODO: Store wallet here ! - await _generateWalletProvider.storeWallet( - generatedWallet, 'Mon portefeuille courant', context, - isHD: true); - // myWalletProvider.listWallets = - // myWalletProvider.getAllWalletsNames(); _generateWalletProvider.isAskedWordValid = false; _generateWalletProvider.askedWordColor = Colors.black; Navigator.push( context, - SmoothTransition(page: OnboardingStepFourteen()), + SmoothTransition( + page: OnboardingStepFourteen( + generatedWallet: generatedWallet)), ); }, child: Text("J'ai noté mon code secret", diff --git a/lib/screens/onBoarding/14_stepFourteen.dart b/lib/screens/onBoarding/14_stepFourteen.dart index ae25c9b..75228db 100644 --- a/lib/screens/onBoarding/14_stepFourteen.dart +++ b/lib/screens/onBoarding/14_stepFourteen.dart @@ -1,7 +1,9 @@ import 'dart:async'; import 'dart:ui'; +import 'package:dubp/dubp.dart'; import 'package:flutter/services.dart'; import 'package:flutter/material.dart'; +import 'package:gecko/models/generateWallets.dart'; import 'package:gecko/models/myWallets.dart'; import 'package:gecko/models/walletOptions.dart'; import 'package:gecko/screens/commonElements.dart'; @@ -10,6 +12,12 @@ import 'package:provider/provider.dart'; // ignore: must_be_immutable class OnboardingStepFourteen extends StatelessWidget { + OnboardingStepFourteen({ + Key validationKey, + @required this.generatedWallet, + }) : super(key: validationKey); + + NewWallet generatedWallet; final int progress = 92; final formKey = GlobalKey(); var pinColor = Color(0xFFA4B600); @@ -46,6 +54,8 @@ class OnboardingStepFourteen extends StatelessWidget { TextEditingController _enterPin = TextEditingController(); MyWalletsProvider _myWalletProvider = Provider.of(context); + GenerateWalletsProvider _generateWalletProvider = + Provider.of(context); return Form( key: formKey, @@ -95,22 +105,29 @@ class OnboardingStepFourteen extends StatelessWidget { ], onCompleted: (_pin) async { print("Completed"); - final resultWallet = await _walletOptions.readLocalWallet( - _walletNbr, _pin.toUpperCase(), _pinLenght, _derivation); - if (resultWallet == 'bad') { + // final resultWallet = await _walletOptions.readLocalWallet( + // _walletNbr, _pin.toUpperCase(), _pinLenght, _derivation); + final bool resultWallet = await _walletOptions.checkPinOK( + generatedWallet.dewif, _pin.toUpperCase(), _pinLenght); + if (resultWallet) { + pinColor = Colors.green[500]; + print(generatedWallet.pin); + await _generateWalletProvider.storeWallet( + generatedWallet, 'Mon portefeuille courant', context, + isHD: true); + _myWalletProvider.getAllWalletsNames(); + _walletOptions.reloadBuild(); + _myWalletProvider.rebuildWidget(); + Navigator.popUntil( + context, + ModalRoute.withName('/'), + ); + } else { errorController.add(ErrorAnimationType .shake); // Triggering error shake animation hasError = true; pinColor = Colors.red[600]; _walletOptions.reloadBuild(); - } else { - pinColor = Colors.green[500]; - _myWalletProvider.getAllWalletsNames(); - _walletOptions.reloadBuild(); - Navigator.popUntil( - context, - ModalRoute.withName('/'), - ); } }, onChanged: (value) {