HELLO PAYMENTS !!!

This commit is contained in:
poka 2021-04-03 00:07:03 +02:00
parent c5e902ba88
commit 0f88f55e04
8 changed files with 150 additions and 86 deletions

View File

@ -15,7 +15,8 @@ SharedPreferences prefs;
String endPointGVA; String endPointGVA;
int ramSys; 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 // Responsive ratios
bool isTall; bool isTall;

View File

@ -29,6 +29,8 @@ class HistoryProvider with ChangeNotifier {
bool isHistoryScreen = false; bool isHistoryScreen = false;
String historySwitchButtun = "Voir l'historique"; String historySwitchButtun = "Voir l'historique";
String rawSvg; String rawSvg;
TextEditingController payAmount = TextEditingController();
TextEditingController payComment = TextEditingController();
Future scan(context) async { Future scan(context) async {
await Permission.camera.request(); await Permission.camera.request();
@ -48,16 +50,31 @@ class HistoryProvider with ChangeNotifier {
return barcode; return barcode;
} }
void pay(context, amount, comment) { void pay(BuildContext context, String pinCode) {
// MyWalletsProvider _myWalletProvider = MyWalletsProvider();
String dewif = String dewif =
File(walletsDirectory.path + '${defaultWallet.chest}/wallet.dewif') File(walletsDirectory.path + '/${defaultWallet.chest}/wallet.dewif')
.readAsLinesSync()[0]; .readAsLinesSync()[0];
DubpRust.simplePaymentFromTransparentAccount( try {
accountIndex: 0, print(defaultWallet.derivation);
amount: 1, print(payAmount.text);
dewif: dewif, print(payComment.text);
gvaEndpoint: endPointGVA, print(dewif);
recipient: pubkey); 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}) { String isPubkey(context, pubkey, {bool goHistory}) {

View File

@ -7,6 +7,9 @@ import 'package:provider/provider.dart';
class MyWalletsProvider with ChangeNotifier { class MyWalletsProvider with ChangeNotifier {
List<WalletData> listWallets = []; List<WalletData> listWallets = [];
String pinCode;
int pinLenght;
Future initWalletFolder() async { Future initWalletFolder() async {
getDefaultWallet(); getDefaultWallet();

View File

@ -328,9 +328,6 @@ class HistoryScreen extends StatelessWidget with ChangeNotifier {
} }
Widget payView(context, HistoryProvider _historyProvider) { Widget payView(context, HistoryProvider _historyProvider) {
TextEditingController payAmount = new TextEditingController();
TextEditingController payComment = new TextEditingController();
return Stack( return Stack(
clipBehavior: Clip.hardEdge, clipBehavior: Clip.hardEdge,
children: <Widget>[ children: <Widget>[
@ -344,7 +341,7 @@ class HistoryScreen extends StatelessWidget with ChangeNotifier {
Padding( Padding(
padding: EdgeInsets.all(8.0), padding: EdgeInsets.all(8.0),
child: TextField( child: TextField(
controller: payComment, controller: _historyProvider.payComment,
maxLines: 2, maxLines: 2,
textAlign: TextAlign.center, textAlign: TextAlign.center,
decoration: InputDecoration(), decoration: InputDecoration(),
@ -357,7 +354,7 @@ class HistoryScreen extends StatelessWidget with ChangeNotifier {
Padding( Padding(
padding: EdgeInsets.all(8.0), padding: EdgeInsets.all(8.0),
child: TextFormField( child: TextFormField(
controller: payAmount, controller: _historyProvider.payAmount,
textAlign: TextAlign.center, textAlign: TextAlign.center,
maxLines: 1, maxLines: 1,
keyboardType: TextInputType.number, keyboardType: TextInputType.number,
@ -378,7 +375,8 @@ class HistoryScreen extends StatelessWidget with ChangeNotifier {
// _historyProvider.pay(payAmount.text, payComment.text); // _historyProvider.pay(payAmount.text, payComment.text);
Navigator.push(context, Navigator.push(context,
MaterialPageRoute(builder: (context) { MaterialPageRoute(builder: (context) {
return UnlockingWallet(wallet: defaultWallet); return UnlockingWallet(
wallet: defaultWallet, action: "pay");
})); }));
}, },
child: Padding( child: Padding(

View File

@ -4,6 +4,7 @@ import 'package:gecko/models/history.dart';
import 'package:gecko/models/home.dart'; import 'package:gecko/models/home.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:gecko/models/myWallets.dart'; import 'package:gecko/models/myWallets.dart';
import 'package:gecko/screens/myWallets/unlockingWallet.dart';
import 'package:gecko/screens/onBoarding/0_noKeychainFound.dart'; import 'package:gecko/screens/onBoarding/0_noKeychainFound.dart';
import 'dart:ui'; import 'dart:ui';
import 'package:gecko/screens/settings.dart'; import 'package:gecko/screens/settings.dart';
@ -270,8 +271,17 @@ class HomeScreen extends StatelessWidget {
height: 57)), height: 57)),
onTap: () { onTap: () {
isWalletsExists isWalletsExists
? Navigator.pushNamed( ? Navigator.push(context,
context, '/mywallets') MaterialPageRoute(
builder: (context) {
return UnlockingWallet(
wallet: defaultWallet,
action: "mywallets",
);
}))
// Navigator.pushNamed(
// context, '/mywallets')
: Navigator.push(context, : Navigator.push(context,
MaterialPageRoute( MaterialPageRoute(
builder: (context) { builder: (context) {

View File

@ -2,22 +2,21 @@ import 'dart:async';
import 'package:dubp/dubp.dart'; import 'package:dubp/dubp.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:gecko/models/history.dart';
import 'package:gecko/models/myWallets.dart'; import 'package:gecko/models/myWallets.dart';
import 'package:gecko/models/walletOptions.dart'; import 'package:gecko/models/walletOptions.dart';
import 'package:gecko/screens/commonElements.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:gecko/screens/myWallets/walletOptions.dart';
import 'package:pin_code_fields/pin_code_fields.dart'; import 'package:pin_code_fields/pin_code_fields.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:gecko/globals.dart'; import 'package:gecko/globals.dart';
// ignore: must_be_immutable // ignore: must_be_immutable
class UnlockingWallet extends StatelessWidget { class UnlockingWallet extends StatelessWidget {
UnlockingWallet({ UnlockingWallet(
Key keyUnlockWallet, {Key keyUnlockWallet, @required this.wallet, @required this.action})
@required this.wallet, : super(key: keyUnlockWallet);
}) : super(key: keyUnlockWallet);
WalletData wallet; WalletData wallet;
String action;
// ignore: close_sinks // ignore: close_sinks
StreamController<ErrorAnimationType> errorController; StreamController<ErrorAnimationType> errorController;
@ -76,6 +75,9 @@ class UnlockingWallet extends StatelessWidget {
TextEditingController _enterPin = TextEditingController(); TextEditingController _enterPin = TextEditingController();
WalletOptionsProvider _walletOptions = WalletOptionsProvider _walletOptions =
Provider.of<WalletOptionsProvider>(context); Provider.of<WalletOptionsProvider>(context);
MyWalletsProvider _myWalletProvider =
Provider.of<MyWalletsProvider>(context);
HistoryProvider _historyProvider = Provider.of<HistoryProvider>(context);
return Form( return Form(
key: formKey, key: formKey,
@ -127,6 +129,9 @@ class UnlockingWallet extends StatelessWidget {
log.d("Completed"); log.d("Completed");
final resultWallet = await _walletOptions.readLocalWallet( final resultWallet = await _walletOptions.readLocalWallet(
context, this.wallet, _pin.toUpperCase(), _pinLenght); context, this.wallet, _pin.toUpperCase(), _pinLenght);
// _myWalletProvider.pinCode = _pin.toUpperCase();
_myWalletProvider.pinLenght = _pinLenght;
if (resultWallet == 'bad') { if (resultWallet == 'bad') {
errorController.add(ErrorAnimationType errorController.add(ErrorAnimationType
.shake); // Triggering error shake animation .shake); // Triggering error shake animation
@ -136,12 +141,12 @@ class UnlockingWallet extends StatelessWidget {
} else { } else {
pinColor = Colors.green[400]; pinColor = Colors.green[400];
// await Future.delayed(Duration(milliseconds: 50)); // await Future.delayed(Duration(milliseconds: 50));
Navigator.push( if (action == "mywallets") {
formKey.currentContext, Navigator.pushNamed(formKey.currentContext, '/mywallets');
SmoothTransition( } else if (action == "pay") {
page: WalletOptions( print("Go payments");
wallet: wallet, _historyProvider.pay(context, _pin.toUpperCase());
))); }
} }
}, },
onChanged: (value) { onChanged: (value) {

View File

@ -7,7 +7,6 @@ import 'package:gecko/models/myWallets.dart';
import 'package:gecko/models/queries.dart'; import 'package:gecko/models/queries.dart';
import 'package:gecko/models/walletOptions.dart'; import 'package:gecko/models/walletOptions.dart';
import 'package:graphql_flutter/graphql_flutter.dart'; import 'package:graphql_flutter/graphql_flutter.dart';
import 'dart:async';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
@ -57,17 +56,16 @@ class WalletOptions extends StatelessWidget {
log.d("Wallet options: $currentChest:${wallet.number}"); log.d("Wallet options: $currentChest:${wallet.number}");
return WillPopScope( return WillPopScope(
onWillPop: () { onWillPop: () {
_walletOptions.isEditing = false; _walletOptions.isEditing = false;
_walletOptions.isBalanceBlur = true; _walletOptions.isBalanceBlur = true;
Navigator.popUntil( Navigator.popUntil(
context, context,
ModalRoute.withName('/'), ModalRoute.withName('/mywallets'),
); );
Navigator.pushNamed(context, '/mywallets'); return Future<bool>.value(true);
return Future<bool>.value(true); },
}, child: Scaffold(
child: Scaffold(
resizeToAvoidBottomInset: false, resizeToAvoidBottomInset: false,
appBar: AppBar( appBar: AppBar(
leading: IconButton( leading: IconButton(
@ -77,9 +75,8 @@ class WalletOptions extends StatelessWidget {
_walletOptions.isBalanceBlur = true; _walletOptions.isBalanceBlur = true;
Navigator.popUntil( Navigator.popUntil(
context, context,
ModalRoute.withName('/'), ModalRoute.withName('/mywallets'),
); );
Navigator.pushNamed(context, '/mywallets');
}), }),
title: SizedBox( title: SizedBox(
height: 22, height: 22,
@ -405,7 +402,7 @@ class WalletOptions extends StatelessWidget {
])), ])),
]), ]),
), ),
)), ),
); ));
} }
} }

View File

@ -3,7 +3,8 @@ import 'package:gecko/globals.dart';
import 'package:gecko/models/myWallets.dart'; import 'package:gecko/models/myWallets.dart';
import 'package:gecko/models/walletOptions.dart'; import 'package:gecko/models/walletOptions.dart';
import 'package:flutter/material.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:gecko/screens/onBoarding/0_noKeychainFound.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
@ -33,42 +34,60 @@ class WalletsHome extends StatelessWidget {
myWalletProvider.getDefaultWallet(); myWalletProvider.getDefaultWallet();
} }
return Scaffold( return WillPopScope(
appBar: AppBar( onWillPop: () {
title: Text('Mes portefeuilles', Navigator.popUntil(
style: TextStyle(color: Colors.grey[850])), context,
backgroundColor: Color(0xffFFD58D), ModalRoute.withName('/'),
), );
floatingActionButton: Visibility( return Future<bool>.value(true);
visible: (isWalletsExists && firstWalletDerivation != -1), },
child: Container( child: Scaffold(
height: 80.0, appBar: AppBar(
width: 80.0, leading: IconButton(
child: FittedBox( icon: Icon(Icons.arrow_back, color: Colors.black),
child: FloatingActionButton( onPressed: () {
heroTag: "buttonGenerateWallet", Navigator.popUntil(
onPressed: () { context,
showDialog( ModalRoute.withName('/'),
context: context, );
builder: (BuildContext context) { }),
return addNewDerivation(context, 1); title: Text('Mes portefeuilles',
}); style: TextStyle(color: Colors.grey[850])),
}, backgroundColor: Color(0xffFFD58D),
child: Container( ),
height: 40, floatingActionButton: Visibility(
width: 40, visible: (isWalletsExists && firstWalletDerivation != -1),
child: Icon(Icons.person_add_alt_1_rounded, child: Container(
color: Colors.grey[850])), height: 80.0,
backgroundColor: Color(0xffEFEFBF))))), width: 80.0,
body: SafeArea( child: FittedBox(
child: !isWalletsExists child: FloatingActionButton(
? NoKeyChainScreen() heroTag: "buttonGenerateWallet",
: myWalletsTiles(context))); 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) { Widget myWalletsTiles(BuildContext context) {
MyWalletsProvider _myWalletProvider = MyWalletsProvider _myWalletProvider =
Provider.of<MyWalletsProvider>(context); Provider.of<MyWalletsProvider>(context);
WalletOptionsProvider _walletOptions =
Provider.of<WalletOptionsProvider>(context);
final bool isWalletsExists = _myWalletProvider.checkIfWalletExist(); final bool isWalletsExists = _myWalletProvider.checkIfWalletExist();
@ -99,11 +118,23 @@ class WalletsHome extends StatelessWidget {
Padding( Padding(
padding: EdgeInsets.all(16), padding: EdgeInsets.all(16),
child: GestureDetector( child: GestureDetector(
onTap: () { onTap: () async {
Navigator.push(context, await _walletOptions.readLocalWallet(
MaterialPageRoute(builder: (context) { context,
return UnlockingWallet(wallet: _repository); _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( child: ClipRRect(
borderRadius: BorderRadius.all(Radius.circular(12)), borderRadius: BorderRadius.all(Radius.circular(12)),
@ -150,10 +181,12 @@ class WalletsHome extends StatelessWidget {
: Colors.black)))), : Colors.black)))),
// dense: true, // dense: true,
onTap: () { onTap: () {
Navigator.push(context, Navigator.push(
MaterialPageRoute(builder: (context) { context,
return UnlockingWallet(wallet: _repository); SmoothTransition(
})); page: WalletOptions(
wallet: _repository,
)));
}, },
) )
])))) ]))))