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;
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;

View File

@ -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}) {

View File

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

View File

@ -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: <Widget>[
@ -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(

View File

@ -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) {

View File

@ -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<ErrorAnimationType> errorController;
@ -76,6 +75,9 @@ class UnlockingWallet extends StatelessWidget {
TextEditingController _enterPin = TextEditingController();
WalletOptionsProvider _walletOptions =
Provider.of<WalletOptionsProvider>(context);
MyWalletsProvider _myWalletProvider =
Provider.of<MyWalletsProvider>(context);
HistoryProvider _historyProvider = Provider.of<HistoryProvider>(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) {

View File

@ -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<bool>.value(true);
},
child: Scaffold(
onWillPop: () {
_walletOptions.isEditing = false;
_walletOptions.isBalanceBlur = true;
Navigator.popUntil(
context,
ModalRoute.withName('/mywallets'),
);
return Future<bool>.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 {
])),
]),
),
)),
);
),
));
}
}

View File

@ -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<bool>.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<MyWalletsProvider>(context);
WalletOptionsProvider _walletOptions =
Provider.of<WalletOptionsProvider>(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,
)));
},
)
]))))