diff --git a/lib/globals.dart b/lib/globals.dart index dbd9ce4..5110f28 100644 --- a/lib/globals.dart +++ b/lib/globals.dart @@ -15,7 +15,8 @@ SharedPreferences prefs; String endPointGVA; int ramSys; -String cesiumPod = "https://g1.data.le-sou.org"; +// String cesiumPod = "https://g1.data.le-sou.org"; +String cesiumPod = "https://g1.data.e-is.pro"; // Responsive ratios bool isTall; diff --git a/lib/models/history.dart b/lib/models/history.dart index b987415..0200822 100644 --- a/lib/models/history.dart +++ b/lib/models/history.dart @@ -29,6 +29,8 @@ class HistoryProvider with ChangeNotifier { bool isHistoryScreen = false; String historySwitchButtun = "Voir l'historique"; String rawSvg; + TextEditingController payAmount = TextEditingController(); + TextEditingController payComment = TextEditingController(); Future scan(context) async { await Permission.camera.request(); @@ -48,16 +50,31 @@ class HistoryProvider with ChangeNotifier { return barcode; } - void pay(context, amount, comment) { + void pay(BuildContext context, String pinCode) { + // MyWalletsProvider _myWalletProvider = MyWalletsProvider(); String dewif = - File(walletsDirectory.path + '${defaultWallet.chest}/wallet.dewif') + File(walletsDirectory.path + '/${defaultWallet.chest}/wallet.dewif') .readAsLinesSync()[0]; - DubpRust.simplePaymentFromTransparentAccount( - accountIndex: 0, - amount: 1, - dewif: dewif, - gvaEndpoint: endPointGVA, - recipient: pubkey); + try { + print(defaultWallet.derivation); + print(payAmount.text); + print(payComment.text); + print(dewif); + print(endPointGVA); + print(pinCode); + print(pubkey); + DubpRust.simplePaymentFromTransparentAccount( + accountIndex: defaultWallet.derivation, + amount: double.parse(payAmount.text), + txComment: payComment.text, + dewif: dewif, + gvaEndpoint: endPointGVA, + secretCode: pinCode, + recipient: pubkey); + } catch (e) { + log.e("ERROR DUBP PAYMENTS"); + log.e(e); + } } String isPubkey(context, pubkey, {bool goHistory}) { diff --git a/lib/models/myWallets.dart b/lib/models/myWallets.dart index c7c796a..ed26c7e 100644 --- a/lib/models/myWallets.dart +++ b/lib/models/myWallets.dart @@ -7,6 +7,9 @@ import 'package:provider/provider.dart'; class MyWalletsProvider with ChangeNotifier { List listWallets = []; + String pinCode; + int pinLenght; + Future initWalletFolder() async { getDefaultWallet(); diff --git a/lib/screens/history.dart b/lib/screens/history.dart index a002fad..4fbe61b 100644 --- a/lib/screens/history.dart +++ b/lib/screens/history.dart @@ -328,9 +328,6 @@ class HistoryScreen extends StatelessWidget with ChangeNotifier { } Widget payView(context, HistoryProvider _historyProvider) { - TextEditingController payAmount = new TextEditingController(); - TextEditingController payComment = new TextEditingController(); - return Stack( clipBehavior: Clip.hardEdge, children: [ @@ -344,7 +341,7 @@ class HistoryScreen extends StatelessWidget with ChangeNotifier { Padding( padding: EdgeInsets.all(8.0), child: TextField( - controller: payComment, + controller: _historyProvider.payComment, maxLines: 2, textAlign: TextAlign.center, decoration: InputDecoration(), @@ -357,7 +354,7 @@ class HistoryScreen extends StatelessWidget with ChangeNotifier { Padding( padding: EdgeInsets.all(8.0), child: TextFormField( - controller: payAmount, + controller: _historyProvider.payAmount, textAlign: TextAlign.center, maxLines: 1, keyboardType: TextInputType.number, @@ -378,7 +375,8 @@ class HistoryScreen extends StatelessWidget with ChangeNotifier { // _historyProvider.pay(payAmount.text, payComment.text); Navigator.push(context, MaterialPageRoute(builder: (context) { - return UnlockingWallet(wallet: defaultWallet); + return UnlockingWallet( + wallet: defaultWallet, action: "pay"); })); }, child: Padding( diff --git a/lib/screens/home.dart b/lib/screens/home.dart index f5b523c..08e83d5 100644 --- a/lib/screens/home.dart +++ b/lib/screens/home.dart @@ -4,6 +4,7 @@ import 'package:gecko/models/history.dart'; import 'package:gecko/models/home.dart'; import 'package:flutter/material.dart'; import 'package:gecko/models/myWallets.dart'; +import 'package:gecko/screens/myWallets/unlockingWallet.dart'; import 'package:gecko/screens/onBoarding/0_noKeychainFound.dart'; import 'dart:ui'; import 'package:gecko/screens/settings.dart'; @@ -270,8 +271,17 @@ class HomeScreen extends StatelessWidget { height: 57)), onTap: () { isWalletsExists - ? Navigator.pushNamed( - context, '/mywallets') + ? Navigator.push(context, + MaterialPageRoute( + builder: (context) { + return UnlockingWallet( + wallet: defaultWallet, + action: "mywallets", + ); + })) + + // Navigator.pushNamed( + // context, '/mywallets') : Navigator.push(context, MaterialPageRoute( builder: (context) { diff --git a/lib/screens/myWallets/unlockingWallet.dart b/lib/screens/myWallets/unlockingWallet.dart index ead410e..d84f983 100644 --- a/lib/screens/myWallets/unlockingWallet.dart +++ b/lib/screens/myWallets/unlockingWallet.dart @@ -2,22 +2,21 @@ import 'dart:async'; import 'package:dubp/dubp.dart'; import 'package:flutter/services.dart'; +import 'package:gecko/models/history.dart'; import 'package:gecko/models/myWallets.dart'; import 'package:gecko/models/walletOptions.dart'; -import 'package:gecko/screens/commonElements.dart'; import 'package:flutter/material.dart'; -import 'package:gecko/screens/myWallets/walletOptions.dart'; import 'package:pin_code_fields/pin_code_fields.dart'; import 'package:provider/provider.dart'; import 'package:gecko/globals.dart'; // ignore: must_be_immutable class UnlockingWallet extends StatelessWidget { - UnlockingWallet({ - Key keyUnlockWallet, - @required this.wallet, - }) : super(key: keyUnlockWallet); + UnlockingWallet( + {Key keyUnlockWallet, @required this.wallet, @required this.action}) + : super(key: keyUnlockWallet); WalletData wallet; + String action; // ignore: close_sinks StreamController errorController; @@ -76,6 +75,9 @@ class UnlockingWallet extends StatelessWidget { TextEditingController _enterPin = TextEditingController(); WalletOptionsProvider _walletOptions = Provider.of(context); + MyWalletsProvider _myWalletProvider = + Provider.of(context); + HistoryProvider _historyProvider = Provider.of(context); return Form( key: formKey, @@ -127,6 +129,9 @@ class UnlockingWallet extends StatelessWidget { log.d("Completed"); final resultWallet = await _walletOptions.readLocalWallet( context, this.wallet, _pin.toUpperCase(), _pinLenght); + // _myWalletProvider.pinCode = _pin.toUpperCase(); + _myWalletProvider.pinLenght = _pinLenght; + if (resultWallet == 'bad') { errorController.add(ErrorAnimationType .shake); // Triggering error shake animation @@ -136,12 +141,12 @@ class UnlockingWallet extends StatelessWidget { } else { pinColor = Colors.green[400]; // await Future.delayed(Duration(milliseconds: 50)); - Navigator.push( - formKey.currentContext, - SmoothTransition( - page: WalletOptions( - wallet: wallet, - ))); + if (action == "mywallets") { + Navigator.pushNamed(formKey.currentContext, '/mywallets'); + } else if (action == "pay") { + print("Go payments"); + _historyProvider.pay(context, _pin.toUpperCase()); + } } }, onChanged: (value) { diff --git a/lib/screens/myWallets/walletOptions.dart b/lib/screens/myWallets/walletOptions.dart index e02ff73..24a63e6 100644 --- a/lib/screens/myWallets/walletOptions.dart +++ b/lib/screens/myWallets/walletOptions.dart @@ -7,7 +7,6 @@ import 'package:gecko/models/myWallets.dart'; import 'package:gecko/models/queries.dart'; import 'package:gecko/models/walletOptions.dart'; import 'package:graphql_flutter/graphql_flutter.dart'; -import 'dart:async'; import 'package:provider/provider.dart'; import 'package:flutter/services.dart'; @@ -57,17 +56,16 @@ class WalletOptions extends StatelessWidget { log.d("Wallet options: $currentChest:${wallet.number}"); return WillPopScope( - onWillPop: () { - _walletOptions.isEditing = false; - _walletOptions.isBalanceBlur = true; - Navigator.popUntil( - context, - ModalRoute.withName('/'), - ); - Navigator.pushNamed(context, '/mywallets'); - return Future.value(true); - }, - child: Scaffold( + onWillPop: () { + _walletOptions.isEditing = false; + _walletOptions.isBalanceBlur = true; + Navigator.popUntil( + context, + ModalRoute.withName('/mywallets'), + ); + return Future.value(true); + }, + child: Scaffold( resizeToAvoidBottomInset: false, appBar: AppBar( leading: IconButton( @@ -77,9 +75,8 @@ class WalletOptions extends StatelessWidget { _walletOptions.isBalanceBlur = true; Navigator.popUntil( context, - ModalRoute.withName('/'), + ModalRoute.withName('/mywallets'), ); - Navigator.pushNamed(context, '/mywallets'); }), title: SizedBox( height: 22, @@ -405,7 +402,7 @@ class WalletOptions extends StatelessWidget { ])), ]), ), - )), - ); + ), + )); } } diff --git a/lib/screens/myWallets/walletsHome.dart b/lib/screens/myWallets/walletsHome.dart index 55c8503..ef02103 100644 --- a/lib/screens/myWallets/walletsHome.dart +++ b/lib/screens/myWallets/walletsHome.dart @@ -3,7 +3,8 @@ import 'package:gecko/globals.dart'; import 'package:gecko/models/myWallets.dart'; import 'package:gecko/models/walletOptions.dart'; import 'package:flutter/material.dart'; -import 'package:gecko/screens/myWallets/unlockingWallet.dart'; +import 'package:gecko/screens/commonElements.dart'; +import 'package:gecko/screens/myWallets/walletOptions.dart'; import 'package:gecko/screens/onBoarding/0_noKeychainFound.dart'; import 'package:provider/provider.dart'; @@ -33,42 +34,60 @@ class WalletsHome extends StatelessWidget { myWalletProvider.getDefaultWallet(); } - return Scaffold( - appBar: AppBar( - title: Text('Mes portefeuilles', - style: TextStyle(color: Colors.grey[850])), - backgroundColor: Color(0xffFFD58D), - ), - floatingActionButton: Visibility( - visible: (isWalletsExists && firstWalletDerivation != -1), - child: Container( - height: 80.0, - width: 80.0, - child: FittedBox( - child: FloatingActionButton( - heroTag: "buttonGenerateWallet", - onPressed: () { - showDialog( - context: context, - builder: (BuildContext context) { - return addNewDerivation(context, 1); - }); - }, - child: Container( - height: 40, - width: 40, - child: Icon(Icons.person_add_alt_1_rounded, - color: Colors.grey[850])), - backgroundColor: Color(0xffEFEFBF))))), - body: SafeArea( - child: !isWalletsExists - ? NoKeyChainScreen() - : myWalletsTiles(context))); + return WillPopScope( + onWillPop: () { + Navigator.popUntil( + context, + ModalRoute.withName('/'), + ); + return Future.value(true); + }, + child: Scaffold( + appBar: AppBar( + leading: IconButton( + icon: Icon(Icons.arrow_back, color: Colors.black), + onPressed: () { + Navigator.popUntil( + context, + ModalRoute.withName('/'), + ); + }), + title: Text('Mes portefeuilles', + style: TextStyle(color: Colors.grey[850])), + backgroundColor: Color(0xffFFD58D), + ), + floatingActionButton: Visibility( + visible: (isWalletsExists && firstWalletDerivation != -1), + child: Container( + height: 80.0, + width: 80.0, + child: FittedBox( + child: FloatingActionButton( + heroTag: "buttonGenerateWallet", + onPressed: () { + showDialog( + context: context, + builder: (BuildContext context) { + return addNewDerivation(context, 1); + }); + }, + child: Container( + height: 40, + width: 40, + child: Icon(Icons.person_add_alt_1_rounded, + color: Colors.grey[850])), + backgroundColor: Color(0xffEFEFBF))))), + body: SafeArea( + child: !isWalletsExists + ? NoKeyChainScreen() + : myWalletsTiles(context)))); } Widget myWalletsTiles(BuildContext context) { MyWalletsProvider _myWalletProvider = Provider.of(context); + WalletOptionsProvider _walletOptions = + Provider.of(context); final bool isWalletsExists = _myWalletProvider.checkIfWalletExist(); @@ -99,11 +118,23 @@ class WalletsHome extends StatelessWidget { Padding( padding: EdgeInsets.all(16), child: GestureDetector( - onTap: () { - Navigator.push(context, - MaterialPageRoute(builder: (context) { - return UnlockingWallet(wallet: _repository); - })); + onTap: () async { + await _walletOptions.readLocalWallet( + context, + _repository, + _myWalletProvider.pinCode, + _myWalletProvider.pinLenght); + Navigator.push( + context, + SmoothTransition( + page: WalletOptions( + wallet: _repository, + ))); + + // Navigator.push(context, + // MaterialPageRoute(builder: (context) { + // return UnlockingWallet(wallet: _repository); + // })); }, child: ClipRRect( borderRadius: BorderRadius.all(Radius.circular(12)), @@ -150,10 +181,12 @@ class WalletsHome extends StatelessWidget { : Colors.black)))), // dense: true, onTap: () { - Navigator.push(context, - MaterialPageRoute(builder: (context) { - return UnlockingWallet(wallet: _repository); - })); + Navigator.push( + context, + SmoothTransition( + page: WalletOptions( + wallet: _repository, + ))); }, ) ]))))