HELLO PAYMENTS !!!
This commit is contained in:
parent
c5e902ba88
commit
0f88f55e04
|
@ -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;
|
||||||
|
|
|
@ -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}) {
|
||||||
|
|
|
@ -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();
|
||||||
|
|
||||||
|
|
|
@ -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(
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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 {
|
||||||
])),
|
])),
|
||||||
]),
|
]),
|
||||||
),
|
),
|
||||||
)),
|
),
|
||||||
);
|
));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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,
|
||||||
|
)));
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
]))))
|
]))))
|
||||||
|
|
Loading…
Reference in New Issue