Skip to content
Snippets Groups Projects
Commit 2d1652db authored by poka's avatar poka
Browse files

Merge branch 'figmaWalletsViewsUX' into 'master'

Add figma UX for wallet option screen - rework wallet list storage

See merge request !9
parents 459a7990 de478e93
No related branches found
No related tags found
1 merge request!9Add figma UX for wallet option screen - rework wallet list storage
Pipeline #11410 passed
Showing
with 160 additions and 90 deletions
<svg width="96" height="117" viewBox="0 0 96 117" fill="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<rect width="96" height="115.59" transform="matrix(-1 0 0 1 96 0.480713)" fill="url(#pattern0)"/>
<defs>
<pattern id="pattern0" patternContentUnits="objectBoundingBox" width="1" height="1">
<use xlink:href="#image0" transform="translate(-0.0160256) scale(0.00819088 0.00680272)"/>
</pattern>
<image id="image0" width="126" height="147" xlink:href="data:image/png;base64,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"/>
</defs>
</svg>
assets/chopp-gecko2.png

9.3 KiB

assets/walletOptions/QR_icon.png

1.58 KiB

assets/walletOptions/android-checkmark.png

264 B

assets/walletOptions/camera.png

585 B

assets/walletOptions/clock.png

1.02 KiB

assets/walletOptions/copy-white.png

482 B

assets/walletOptions/edit.png

284 B

assets/walletOptions/ellipse1.png

1.72 KiB

assets/walletOptions/icon_oeuil.png

719 B

assets/walletOptions/icon_oeuil_close.png

3.93 KiB

assets/walletOptions/key.png

492 B

assets/walletOptions/trash.png

2.22 KiB

import 'dart:io'; import 'dart:io';
import 'package:shared_preferences/shared_preferences.dart'; import 'package:shared_preferences/shared_preferences.dart';
// Files paths
Directory appPath; Directory appPath;
Directory walletsDirectory; Directory walletsDirectory;
File defaultWalletFile;
File currentChestFile;
String defaultWallet;
String appVersion; String appVersion;
SharedPreferences prefs; SharedPreferences prefs;
String endPointGVA; String endPointGVA;
......
...@@ -25,12 +25,14 @@ Future<void> main() async { ...@@ -25,12 +25,14 @@ Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized(); WidgetsFlutterBinding.ensureInitialized();
HomeProvider _homeProvider = HomeProvider(); HomeProvider _homeProvider = HomeProvider();
MyWalletsProvider _walletsProvider = MyWalletsProvider();
await _homeProvider.getAppPath(); await _homeProvider.getAppPath();
await _homeProvider.createDefaultAvatar(); await _homeProvider.createDefaultAvatar();
await _walletsProvider.initWalletFolder();
appVersion = await _homeProvider.getAppVersion(); appVersion = await _homeProvider.getAppVersion();
prefs = await SharedPreferences.getInstance(); prefs = await SharedPreferences.getInstance();
final HiveStore _store = // final HiveStore _store =
await HiveStore.open(path: '${appPath.path}/gqlCache'); // await HiveStore.open(path: '${appPath.path}/gqlCache');
// Get a valid GVA endpoint // Get a valid GVA endpoint
endPointGVA = await _homeProvider.getValidEndpoint(); endPointGVA = await _homeProvider.getValidEndpoint();
...@@ -49,7 +51,7 @@ Future<void> main() async { ...@@ -49,7 +51,7 @@ Future<void> main() async {
await SentryFlutter.init((options) { await SentryFlutter.init((options) {
options.dsn = options.dsn =
'https://c09587b46eaa42e8b9fda28d838ed180@o496840.ingest.sentry.io/5572110'; 'https://c09587b46eaa42e8b9fda28d838ed180@o496840.ingest.sentry.io/5572110';
}, appRunner: () => runApp(Gecko(endPointGVA, _store))); }, appRunner: () => runApp(Gecko(endPointGVA)));
// runZoned<Future<void>>( // runZoned<Future<void>>(
// () async { // () async {
...@@ -66,14 +68,13 @@ Future<void> main() async { ...@@ -66,14 +68,13 @@ Future<void> main() async {
} else { } else {
print('Debug mode enabled: No sentry alerte'); print('Debug mode enabled: No sentry alerte');
runApp(Gecko(endPointGVA, _store)); runApp(Gecko(endPointGVA));
} }
} }
class Gecko extends StatelessWidget { class Gecko extends StatelessWidget {
Gecko(this.randomEndpoint, this._store); Gecko(this.randomEndpoint);
final String randomEndpoint; final String randomEndpoint;
final HiveStore _store;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
...@@ -84,7 +85,7 @@ class Gecko extends StatelessWidget { ...@@ -84,7 +85,7 @@ class Gecko extends StatelessWidget {
final _client = ValueNotifier( final _client = ValueNotifier(
GraphQLClient( GraphQLClient(
cache: GraphQLCache(store: _store), cache: GraphQLCache(),
link: _httpLink, link: _httpLink,
), ),
); );
......
...@@ -67,7 +67,7 @@ class CesiumPlusProvider with ChangeNotifier { ...@@ -67,7 +67,7 @@ class CesiumPlusProvider with ChangeNotifier {
String _name; String _name;
List queryOptions = await _buildQuery(_pubkey); List queryOptions = await _buildQuery(_pubkey);
final response = await http.post(queryOptions[0], final response = await http.post((Uri.parse(queryOptions[0])),
body: queryOptions[1], headers: queryOptions[2]); body: queryOptions[1], headers: queryOptions[2]);
// print('RESULT CESIUM QUERY: ${response.body}'); //For debug // print('RESULT CESIUM QUERY: ${response.body}'); //For debug
final responseJson = json.decode(response.body); final responseJson = json.decode(response.body);
...@@ -87,7 +87,7 @@ class CesiumPlusProvider with ChangeNotifier { ...@@ -87,7 +87,7 @@ class CesiumPlusProvider with ChangeNotifier {
Future<List> getAvatar(String _pubkey) async { Future<List> getAvatar(String _pubkey) async {
List queryOptions = await _buildQuery(_pubkey); List queryOptions = await _buildQuery(_pubkey);
final response = await http.post(queryOptions[0], final response = await http.post((Uri.parse(queryOptions[0])),
body: queryOptions[1], headers: queryOptions[2]); body: queryOptions[1], headers: queryOptions[2]);
// print('RESULT CESIUM QUERY: ${response.body}'); //For debug // print('RESULT CESIUM QUERY: ${response.body}'); //For debug
final responseJson = json.decode(response.body); final responseJson = json.decode(response.body);
......
...@@ -10,7 +10,6 @@ import 'package:gecko/globals.dart'; ...@@ -10,7 +10,6 @@ import 'package:gecko/globals.dart';
import 'package:pdf/pdf.dart'; import 'package:pdf/pdf.dart';
import 'package:pdf/widgets.dart' as pw; import 'package:pdf/widgets.dart' as pw;
import 'package:printing/printing.dart'; import 'package:printing/printing.dart';
import 'package:truncate/truncate.dart';
class GenerateWalletsProvider with ChangeNotifier { class GenerateWalletsProvider with ChangeNotifier {
GenerateWalletsProvider(); GenerateWalletsProvider();
...@@ -39,50 +38,38 @@ class GenerateWalletsProvider with ChangeNotifier { ...@@ -39,50 +38,38 @@ class GenerateWalletsProvider with ChangeNotifier {
bool canImport = false; bool canImport = false;
bool isPinChanged = false; bool isPinChanged = false;
Future storeWallet(NewWallet wallet, String _name, BuildContext context, Future storeHDWChest(
{bool isHD = false}) async { NewWallet _wallet, String _name, BuildContext context) async {
int nbrWallet; // Directory walletDirectory;
if (isHD) {
nbrWallet = 0;
} else {
nbrWallet = 1;
}
Directory walletNbrDirectory; final Directory hdDirectory = Directory('${walletsDirectory.path}/0');
do { await hdDirectory.create();
nbrWallet++;
walletNbrDirectory = Directory('${walletsDirectory.path}/$nbrWallet');
} while (await walletNbrDirectory.exists());
final walletFile = File('${walletNbrDirectory.path}/wallet.dewif'); final configFile = File('${hdDirectory.path}/list.conf');
File _currentChestFile = File('${walletsDirectory.path}/currentChest.conf');
await walletNbrDirectory.create(); final dewifFile = File('${hdDirectory.path}/wallet.dewif');
await walletFile.writeAsString(wallet.dewif);
final configFile = File('${walletNbrDirectory.path}/config.txt'); // List<String> _lastConfig = [];
// _lastConfig = await masterConfigFile.readAsLines();
// final int _lastDerivation = int.parse(_lastConfig.last.split(':')[2]);
// final int _derivationNbr = _lastDerivation + 3;
if (isHD) { final int _derivationNbr = 3;
final int _derivationNbr = 3; List _pubkeysTmp = await DubpRust.getBip32DewifAccountsPublicKeys(
List _pubkeysTmp = await DubpRust.getBip32DewifAccountsPublicKeys( dewif: _wallet.dewif,
dewif: wallet.dewif, secretCode: _wallet.pin,
secretCode: wallet.pin, accountsIndex: [_derivationNbr]);
accountsIndex: [_derivationNbr]); String _pubkey = _pubkeysTmp[0];
String _pubkey = _pubkeysTmp[0];
await configFile await configFile.writeAsString('0:0:$_name:$_derivationNbr:$_pubkey');
.writeAsString('$nbrWallet:$_name:$_derivationNbr:$_pubkey'); await dewifFile.writeAsString(_wallet.dewif);
// Navigator.pop(context, true); bool isCurrentChestExist = _currentChestFile.existsSync();
} else { if (isCurrentChestExist) {
final int _derivationNbr = -1; await _currentChestFile.delete();
String _pubkey = await DubpRust.getDewifPublicKey(
dewif: wallet.dewif,
pin: wallet.pin,
);
await configFile
.writeAsString('$nbrWallet:$_name:$_derivationNbr:$_pubkey');
} }
await _currentChestFile.create();
// Navigator.pop(context, true); await _currentChestFile.writeAsString('0');
return _name; return _name;
} }
...@@ -167,11 +154,9 @@ class GenerateWalletsProvider with ChangeNotifier { ...@@ -167,11 +154,9 @@ class GenerateWalletsProvider with ChangeNotifier {
generatedMnemonic = await DubpRust.genMnemonic(language: Language.french); generatedMnemonic = await DubpRust.genMnemonic(language: Language.french);
this.actualWallet = await generateWallet(this.generatedMnemonic); this.actualWallet = await generateWallet(this.generatedMnemonic);
walletIsGenerated = true; walletIsGenerated = true;
// notifyListeners();
} catch (e) { } catch (e) {
print(e); print(e);
} }
// await checkIfWalletExist();
return generatedMnemonic; return generatedMnemonic;
} }
...@@ -259,12 +244,12 @@ class GenerateWalletsProvider with ChangeNotifier { ...@@ -259,12 +244,12 @@ class GenerateWalletsProvider with ChangeNotifier {
} }
Future importWallet(context, _cesiumID, _cesiumPWD) async { Future importWallet(context, _cesiumID, _cesiumPWD) async {
String _walletPubkey = await DubpRust.getLegacyPublicKey( // String _walletPubkey = await DubpRust.getLegacyPublicKey(
salt: _cesiumID, password: _cesiumPWD); // salt: _cesiumID, password: _cesiumPWD);
String shortPubkey = truncate(_walletPubkey, 9, // String shortPubkey = truncate(_walletPubkey, 9,
omission: "...", position: TruncatePosition.end); // omission: "...", position: TruncatePosition.end);
await storeWallet( // await storeWallet(
actualWallet, 'Portefeuille Cesium - $shortPubkey', context); // actualWallet, 'Portefeuille Cesium - $shortPubkey', context);
cesiumID.text = ''; cesiumID.text = '';
cesiumPWD.text = ''; cesiumPWD.text = '';
cesiumPubkey.text = ''; cesiumPubkey.text = '';
......
...@@ -4,6 +4,7 @@ import 'package:gecko/globals.dart'; ...@@ -4,6 +4,7 @@ import 'package:gecko/globals.dart';
import 'package:gecko/models/home.dart'; import 'package:gecko/models/home.dart';
import 'package:gecko/screens/history.dart'; import 'package:gecko/screens/history.dart';
import 'package:graphql_flutter/graphql_flutter.dart'; import 'package:graphql_flutter/graphql_flutter.dart';
import 'package:jdenticon_dart/jdenticon_dart.dart';
import 'package:permission_handler/permission_handler.dart'; import 'package:permission_handler/permission_handler.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:qrscan/qrscan.dart' as scanner; import 'package:qrscan/qrscan.dart' as scanner;
...@@ -24,6 +25,7 @@ class HistoryProvider with ChangeNotifier { ...@@ -24,6 +25,7 @@ class HistoryProvider with ChangeNotifier {
Map pageInfo; Map pageInfo;
bool isHistoryScreen = false; bool isHistoryScreen = false;
String historySwitchButtun = "Voir l'historique"; String historySwitchButtun = "Voir l'historique";
String rawSvg;
Future scan(context) async { Future scan(context) async {
await Permission.camera.request(); await Permission.camera.request();
...@@ -43,7 +45,7 @@ class HistoryProvider with ChangeNotifier { ...@@ -43,7 +45,7 @@ class HistoryProvider with ChangeNotifier {
return barcode; return barcode;
} }
String isPubkey(context, pubkey) { String isPubkey(context, pubkey, {bool goHistory}) {
HomeProvider _homeProvider = HomeProvider _homeProvider =
Provider.of<HomeProvider>(context, listen: false); Provider.of<HomeProvider>(context, listen: false);
final RegExp regExp = new RegExp( final RegExp regExp = new RegExp(
...@@ -62,8 +64,16 @@ class HistoryProvider with ChangeNotifier { ...@@ -62,8 +64,16 @@ class HistoryProvider with ChangeNotifier {
this.outputPubkey.text = pubkey; this.outputPubkey.text = pubkey;
isHistoryScreen = false; if (goHistory == null) goHistory = false;
historySwitchButtun = "Voir l'historique";
if (goHistory) {
isHistoryScreen = true;
historySwitchButtun = "Payer";
} else {
isHistoryScreen = false;
historySwitchButtun = "Voir l'historique";
}
_homeProvider.handleSearchEnd(); _homeProvider.handleSearchEnd();
Navigator.push( Navigator.push(
context, context,
...@@ -101,7 +111,6 @@ class HistoryProvider with ChangeNotifier { ...@@ -101,7 +111,6 @@ class HistoryProvider with ChangeNotifier {
// Lion simone: 78jhpprYkMNF6i5kQPXfkAVBpd2aqcpieNsXTSW4c21f // Lion simone: 78jhpprYkMNF6i5kQPXfkAVBpd2aqcpieNsXTSW4c21f
List parseHistory(txs, _pubkey) { List parseHistory(txs, _pubkey) {
// print(txs);
var transBC = []; var transBC = [];
int i = 0; int i = 0;
...@@ -135,7 +144,7 @@ class HistoryProvider with ChangeNotifier { ...@@ -135,7 +144,7 @@ class HistoryProvider with ChangeNotifier {
transBC[i].add(date); transBC[i].add(date);
// print( // print(
// "DEBUG date et comment: ${date.toString()} -- ${transaction['comment'].toString()}"); // "DEBUG date et comment: ${date.toString()} -- ${transaction['comment'].toString()}");
int amountBrut = int.parse(output.split(':')[0]); final int amountBrut = int.parse(output.split(':')[0]);
final base = int.parse(output.split(':')[1]); final base = int.parse(output.split(':')[1]);
final int applyBase = base - currentBase; final int applyBase = base - currentBase;
final num amount = final num amount =
...@@ -242,6 +251,10 @@ class HistoryProvider with ChangeNotifier { ...@@ -242,6 +251,10 @@ class HistoryProvider with ChangeNotifier {
notifyListeners(); notifyListeners();
} }
String generateIdenticon(String _pubkey) {
return Jdenticon.toSvg(_pubkey);
}
// num getBalance(_pubkey) { // num getBalance(_pubkey) {
// getBalance(_pubkey); // getBalance(_pubkey);
// } // }
......
...@@ -8,13 +8,50 @@ import 'package:provider/provider.dart'; ...@@ -8,13 +8,50 @@ import 'package:provider/provider.dart';
class MyWalletsProvider with ChangeNotifier { class MyWalletsProvider with ChangeNotifier {
String listWallets; String listWallets;
Future initWalletFolder() async {
await getDefaultWallet();
final bool isWalletFolderExist = await walletsDirectory.exists();
if (!isWalletFolderExist) {
await Directory(walletsDirectory.path).create();
}
File _currentChestFile = File('${walletsDirectory.path}/currentChest.conf');
await _currentChestFile.create();
await _currentChestFile.writeAsString('0');
final bool isChestsExist =
await Directory('${walletsDirectory.path}/0').exists();
if (!isChestsExist) {
await Directory('${walletsDirectory.path}/0').create();
await Directory('${walletsDirectory.path}/1').create();
await File('${walletsDirectory.path}/0/list.conf').create();
await File('${walletsDirectory.path}/0/order.conf').create();
await File('${walletsDirectory.path}/1/list.conf').create();
await File('${walletsDirectory.path}/1/order.conf').create();
}
}
int getCurrentChest() {
File _currentChestFile = File('${walletsDirectory.path}/currentChest.conf');
bool isCurrentChestExist = _currentChestFile.existsSync();
if (!isCurrentChestExist) {
_currentChestFile.createSync();
_currentChestFile.writeAsString('0');
}
return int.parse(_currentChestFile.readAsStringSync());
}
bool checkIfWalletExist() { bool checkIfWalletExist() {
if (appPath == null) { if (appPath == null) {
return false; return false;
} }
List contents = walletsDirectory.listSync(); final String _walletList = getAllWalletsNames(0);
if (contents.length == 0) {
if (_walletList == '') {
print('No wallets detected'); print('No wallets detected');
return false; return false;
} else { } else {
...@@ -23,12 +60,7 @@ class MyWalletsProvider with ChangeNotifier { ...@@ -23,12 +60,7 @@ class MyWalletsProvider with ChangeNotifier {
} }
} }
String getAllWalletsNames() { String getAllWalletsNames(int _chest) {
final bool _isWalletsExists = checkIfWalletExist();
if (!_isWalletsExists) {
return '';
}
if (listWallets != null && listWallets.isNotEmpty) { if (listWallets != null && listWallets.isNotEmpty) {
listWallets = ''; listWallets = '';
} }
...@@ -36,24 +68,39 @@ class MyWalletsProvider with ChangeNotifier { ...@@ -36,24 +68,39 @@ class MyWalletsProvider with ChangeNotifier {
listWallets = ''; listWallets = '';
} }
print(walletsDirectory.path);
// int i = 0; // int i = 0;
walletsDirectory File _walletConfig = File('${walletsDirectory.path}/$_chest/list.conf');
.listSync(recursive: false, followLinks: false) _walletConfig.readAsLinesSync().forEach((element) {
.forEach((_wallet) { if (listWallets != '') {
File _walletConfig = File('${_wallet.path}/config.txt'); listWallets += '\n';
_walletConfig.readAsLinesSync().forEach((element) { }
if (listWallets != '') { listWallets += element;
listWallets += '\n'; // listWallets += "${element.split(':')[0]}:${element.split(':')[1]}:${element.split(':')[2]}"
}
listWallets += element;
// listWallets += "${element.split(':')[0]}:${element.split(':')[1]}:${element.split(':')[2]}"
});
}); });
print(listWallets); print(listWallets);
return listWallets; return listWallets;
} }
Future getDefaultWallet() async {
defaultWalletFile = File('${appPath.path}/defaultWallet');
bool isdefaultWalletFile = await defaultWalletFile.exists();
if (!isdefaultWalletFile) {
await File(defaultWalletFile.path).create();
}
try {
defaultWallet = await defaultWalletFile.readAsString();
} catch (e) {
defaultWallet = '0:0';
}
if (defaultWallet == '') defaultWallet = '0:0';
}
Future<int> deleteAllWallet(context) async { Future<int> deleteAllWallet(context) async {
try { try {
print('DELETE THAT ?: $walletsDirectory'); print('DELETE THAT ?: $walletsDirectory');
...@@ -63,6 +110,7 @@ class MyWalletsProvider with ChangeNotifier { ...@@ -63,6 +110,7 @@ class MyWalletsProvider with ChangeNotifier {
if (_answer) { if (_answer) {
await walletsDirectory.delete(recursive: true); await walletsDirectory.delete(recursive: true);
await walletsDirectory.create(); await walletsDirectory.create();
await initWalletFolder();
notifyListeners(); notifyListeners();
Navigator.pop(context); Navigator.pop(context);
} }
...@@ -95,7 +143,7 @@ class MyWalletsProvider with ChangeNotifier { ...@@ -95,7 +143,7 @@ class MyWalletsProvider with ChangeNotifier {
onPressed: () { onPressed: () {
WidgetsBinding.instance.addPostFrameCallback((_) { WidgetsBinding.instance.addPostFrameCallback((_) {
_myWalletProvider.listWallets = _myWalletProvider.listWallets =
_myWalletProvider.getAllWalletsNames(); _myWalletProvider.getAllWalletsNames(getCurrentChest());
_myWalletProvider.rebuildWidget(); _myWalletProvider.rebuildWidget();
}); });
Navigator.pop(context, true); Navigator.pop(context, true);
...@@ -107,22 +155,26 @@ class MyWalletsProvider with ChangeNotifier { ...@@ -107,22 +155,26 @@ class MyWalletsProvider with ChangeNotifier {
); );
} }
Future<void> generateNewDerivation( Future<void> generateNewDerivation(context, String _name) async {
context, String _name, int _walletNbr) async {
int _newDerivationNbr; int _newDerivationNbr;
final _walletConfig = int _newWalletNbr;
File('${walletsDirectory.path}/$_walletNbr/config.txt'); final _walletConfig = File('${walletsDirectory.path}/0/list.conf');
if (await _walletConfig.readAsString() == '') { if (await _walletConfig.readAsString() == '') {
_newDerivationNbr = 3; _newDerivationNbr = 3;
_newWalletNbr = 0;
} else { } else {
String _lastWallet = String _lastWallet =
await _walletConfig.readAsLines().then((value) => value.last); await _walletConfig.readAsLines().then((value) => value.last);
int _lastDerivation = int.parse(_lastWallet.split(':')[2]); int _lastDerivation = int.parse(_lastWallet.split(':')[3]);
_newDerivationNbr = _lastDerivation + 3; _newDerivationNbr = _lastDerivation + 3;
int _lastWalletNbr = int.parse(_lastWallet.split(':')[1]);
_newWalletNbr = _lastWalletNbr + 1;
} }
await _walletConfig.writeAsString('\n$_walletNbr:$_name:$_newDerivationNbr', await _walletConfig.writeAsString(
'\n0:$_newWalletNbr:$_name:$_newDerivationNbr',
mode: FileMode.append); mode: FileMode.append);
print(await _walletConfig.readAsString()); print(await _walletConfig.readAsString());
......
const String getHistory = r''' const String getHistory = r'''
query ($pubkey: String!, $number: Int!, $cursor: String) { query ($pubkey: String!, $number: Int!, $cursor: String) {
txsHistoryBc( txsHistoryBc(
pubkeyOrScript: $pubkey script: $pubkey
pagination: { pageSize: $number, ord: DESC, cursor: $cursor } pagination: { pageSize: $number, ord: DESC, cursor: $cursor }
) { ) {
both { both {
...@@ -52,8 +52,13 @@ const String getHistory = r''' ...@@ -52,8 +52,13 @@ const String getHistory = r'''
const String getBalance = r''' const String getBalance = r'''
query ($pubkey: String!) { query ($pubkey: String!) {
balance(script: $pubkey) { balance(script: $pubkey) {
amount amount
base base
}
currentUd {
amount
base
}
} }
'''; ''';
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment