Settings: Add button to import Cesium wallet, and button to generate new keystore

This commit is contained in:
poka 2021-02-16 03:04:33 +01:00
parent f5d4e2507b
commit 1522c46256
5 changed files with 97 additions and 26 deletions

View File

@ -41,7 +41,12 @@ class GenerateWalletsProvider with ChangeNotifier {
Future storeWallet(NewWallet wallet, String _name, BuildContext context,
{bool isHD = false}) async {
int nbrWallet = 0;
int nbrWallet;
if (isHD) {
nbrWallet = 0;
} else {
nbrWallet = 1;
}
Directory walletNbrDirectory;
do {
nbrWallet++;
@ -65,6 +70,7 @@ class GenerateWalletsProvider with ChangeNotifier {
await configFile
.writeAsString('$nbrWallet:$_name:$_derivationNbr:$_pubkey');
Navigator.pop(context, true);
} else {
final int _derivationNbr = -1;
String _pubkey = await DubpRust.getDewifPublicKey(
@ -76,10 +82,6 @@ class GenerateWalletsProvider with ChangeNotifier {
}
Navigator.pop(context, true);
if (isHD) {
Navigator.pop(context, true);
}
// notifyListeners();
return _name;
}
@ -182,14 +184,17 @@ class GenerateWalletsProvider with ChangeNotifier {
return this.actualWallet;
}
Future<void> changePinCode() async {
Future<void> changePinCode({bool reload}) async {
actualWallet = await DubpRust.changeDewifPin(
dewif: actualWallet.dewif,
oldPin: actualWallet.pin,
);
pin.text = actualWallet.pin;
notifyListeners();
isPinChanged = true;
if (reload) {
notifyListeners();
}
}
Future<Uint8List> printWallet(String _title) async {
@ -238,8 +243,6 @@ class GenerateWalletsProvider with ChangeNotifier {
salt: _cesiumID, password: _cesiumPWD);
cesiumPubkey.text = _walletPubkey;
// changePinCode();
// notifyListeners();
print(_walletPubkey);
}
@ -250,14 +253,14 @@ class GenerateWalletsProvider with ChangeNotifier {
omission: "...", position: TruncatePosition.end);
await storeWallet(
actualWallet, 'Portefeuille Cesium - $shortPubkey', context);
print('taaaaaaaaaaaaaaaaa');
print(actualWallet.pin);
cesiumID.text = '';
cesiumPWD.text = '';
cesiumPubkey.text = '';
canImport = false;
isPinChanged = false;
pin.text = '';
isCesiumIDVisible = false;
isCesiumPWDVisible = false;
notifyListeners();
}
@ -271,6 +274,13 @@ class GenerateWalletsProvider with ChangeNotifier {
notifyListeners();
}
void showPinIfEmpty() {
if (!isPinChanged) {
changePinCode(reload: true);
isPinChanged = true;
}
}
void reloadBuild() {
notifyListeners();
}

View File

@ -83,7 +83,8 @@ class GenerateWalletsScreen extends StatelessWidget {
icon: Icon(Icons.replay),
color: Color(0xffD28928),
onPressed: () {
_generateWalletProvider.changePinCode();
_generateWalletProvider.changePinCode(
reload: false);
},
),
],

View File

@ -1,7 +1,9 @@
import 'dart:async';
import 'package:flutter/services.dart';
import 'package:gecko/models/generateWallets.dart';
import 'package:flutter/material.dart';
import 'package:gecko/models/myWallets.dart';
import 'package:gecko/models/walletOptions.dart';
import 'package:provider/provider.dart';
class ImportWalletScreen extends StatelessWidget {
@ -13,6 +15,10 @@ class ImportWalletScreen extends StatelessWidget {
Provider.of<GenerateWalletsProvider>(context);
MyWalletsProvider _myWalletProvider =
Provider.of<MyWalletsProvider>(context);
WalletOptionsProvider _walletOptions =
Provider.of<WalletOptionsProvider>(context);
_generateWalletProvider.showPinIfEmpty();
return WillPopScope(
onWillPop: () {
@ -22,6 +28,9 @@ class ImportWalletScreen extends StatelessWidget {
_generateWalletProvider.pin.text = '';
_generateWalletProvider.canImport = false;
_generateWalletProvider.isPinChanged = false;
_generateWalletProvider.isCesiumIDVisible = false;
_generateWalletProvider.isCesiumPWDVisible = false;
_generateWalletProvider.reloadBuild();
return Future<bool>.value(true);
},
child: Scaffold(
@ -35,6 +44,9 @@ class ImportWalletScreen extends StatelessWidget {
_generateWalletProvider.pin.text = '';
_generateWalletProvider.canImport = false;
_generateWalletProvider.isPinChanged = false;
_generateWalletProvider.isCesiumIDVisible = false;
_generateWalletProvider.isCesiumPWDVisible = false;
_generateWalletProvider.reloadBuild();
Navigator.of(context).pop();
}),
title: SizedBox(
@ -122,14 +134,21 @@ class ImportWalletScreen extends StatelessWidget {
),
),
SizedBox(height: 15),
Text(
_generateWalletProvider.cesiumPubkey.text,
style: TextStyle(
fontSize: 14.0,
color: Colors.black,
fontWeight: FontWeight.bold,
fontFamily: 'Monospace'),
),
GestureDetector(
onTap: () {
Clipboard.setData(ClipboardData(
text: _generateWalletProvider
.cesiumPubkey.text));
_walletOptions.snackCopyKey(ctx);
},
child: Text(
_generateWalletProvider.cesiumPubkey.text,
style: TextStyle(
fontSize: 14.0,
color: Colors.black,
fontWeight: FontWeight.bold,
fontFamily: 'Monospace'),
)),
SizedBox(height: 20),
toolTips(_toolTipSecret, 'Code secret:',
"Retenez bien votre code secret, il vous sera demandé à chaque paiement, ainsi que pour configurer votre portefeuille"),
@ -151,8 +170,8 @@ class ImportWalletScreen extends StatelessWidget {
icon: Icon(Icons.replay),
color: Color(0xffD28928),
onPressed: () {
_generateWalletProvider.changePinCode();
_generateWalletProvider.isPinChanged = true;
_generateWalletProvider.changePinCode(
reload: true);
},
),
],

View File

@ -1,8 +1,11 @@
import 'package:flutter/material.dart';
import 'package:dubp/dubp.dart';
import 'package:gecko/models/myWallets.dart';
import 'package:gecko/screens/myWallets/generateWallets.dart';
import 'dart:io';
import 'package:gecko/screens/myWallets/importWallet.dart';
// ignore: must_be_immutable
class SettingsScreen extends StatelessWidget {
String generatedMnemonic;
@ -28,18 +31,56 @@ class SettingsScreen extends StatelessWidget {
child: Text('Paramètres'),
)),
body: Column(children: <Widget>[
SizedBox(height: 40),
SizedBox(
height: 50,
width: 500,
child: ElevatedButton(
style: ElevatedButton.styleFrom(
elevation: 5,
primary: Color(0xFFFFCA6F), // background
onPrimary: Colors.black, // foreground
),
onPressed: () => Navigator.push(
context,
MaterialPageRoute(builder: (context) {
return ImportWalletScreen();
}),
).then((value) => {
if (value == true) {Navigator.pop(context)}
}),
child: Text("Importer un portefeuille Cesium",
style: TextStyle(fontSize: 15)))),
SizedBox(height: 20),
SizedBox(
height: 50,
width: 500,
child: ElevatedButton(
style: ElevatedButton.styleFrom(
elevation: 5,
primary: Color(0xFFFFCA6F), // background
onPrimary: Colors.black, // foreground
),
onPressed: () => Navigator.push(
context,
MaterialPageRoute(builder: (context) {
return GenerateWalletsScreen();
}),
).then((value) => {
if (value == true) {Navigator.pop(context)}
}),
child: Text("Générer un nouveau trousseau",
style: TextStyle(fontSize: 15)))),
Expanded(
child: Align(
alignment: Alignment.bottomCenter,
child: SizedBox(
height: 100,
width: 1000,
width: 500,
child: ElevatedButton(
style: ElevatedButton.styleFrom(
elevation: 5,
primary: Colors
.redAccent, //Color(0xffFFD68E), // background
primary: Colors.redAccent, // background
onPrimary: Colors.black, // foreground
),
onPressed: () async => {

View File

@ -5,7 +5,7 @@ description: A new Flutter project.
# pub.dev using `pub publish`. This is preferred for private packages.
publish_to: 'none' # Remove this line if you wish to publish to pub.dev
version: 0.0.1+4
version: 0.0.1+5
environment:
sdk: ">=2.7.0 <3.0.0"