Compare commits

...

3 Commits

9 changed files with 71 additions and 39 deletions

View File

@ -8,6 +8,7 @@ Directory appPath;
Directory walletsDirectory; Directory walletsDirectory;
File defaultWalletFile; File defaultWalletFile;
File currentChestFile; File currentChestFile;
File globalConf;
WalletData defaultWallet; WalletData defaultWallet;
String appVersion; String appVersion;

View File

@ -44,6 +44,7 @@ Future<void> main() async {
await _homeProvider.getAppPath(); await _homeProvider.getAppPath();
await _homeProvider.createDefaultAvatar(); await _homeProvider.createDefaultAvatar();
await _walletsProvider.initWalletFolder(); await _walletsProvider.initWalletFolder();
await _walletsProvider.loadGlobalConfig();
// _walletsProvider.getDefaultWallet(); // _walletsProvider.getDefaultWallet();
appVersion = await _homeProvider.getAppVersion(); appVersion = await _homeProvider.getAppVersion();
prefs = await SharedPreferences.getInstance(); prefs = await SharedPreferences.getInstance();

23
lib/models/chestData.dart Normal file
View File

@ -0,0 +1,23 @@
import 'dart:io';
class ChestData {
String dewif;
Map<int, WalletData> accounts;
int defaultWallet;
ChestData({dewif, accounts, defaultWallet});
factory ChestData.fromJson(Map<String, dynamic> json) =>
_$ChestDataFromJson(json);
Map<String, dynamic> toJson() => _$ChestDataToJson(this);
// Representation of ChestData when debugging
@override
String toString() {
return this.accounts.entries.join();
}
}
class WalletData {
String name;
File avatar;
}

View File

@ -4,6 +4,7 @@ import 'package:flutter/material.dart';
import 'dart:async'; import 'dart:async';
import 'package:gecko/globals.dart'; import 'package:gecko/globals.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'dart:convert';
class MyWalletsProvider with ChangeNotifier { class MyWalletsProvider with ChangeNotifier {
List<WalletData> listWallets = []; List<WalletData> listWallets = [];
@ -11,32 +12,30 @@ class MyWalletsProvider with ChangeNotifier {
int pinLenght; int pinLenght;
Future initWalletFolder() async { Future initWalletFolder() async {
// getDefaultWallet();
final bool isWalletFolderExist = await walletsDirectory.exists(); final bool isWalletFolderExist = await walletsDirectory.exists();
if (!isWalletFolderExist) { if (!isWalletFolderExist) {
await Directory(walletsDirectory.path).create(); await Directory(walletsDirectory.path).create();
} }
File _currentChestFile = File('${walletsDirectory.path}/currentChest.conf'); // File _currentChestFile = File('${walletsDirectory.path}/currentChest.conf');
globalConf = File('${appPath.path}/config.json');
await _currentChestFile.create(); await globalConf.create();
await _currentChestFile.writeAsString('0'); await globalConf.writeAsString('0');
final bool isChestsExist = final bool isChestsExist =
await Directory('${walletsDirectory.path}/0').exists(); await Directory('${walletsDirectory.path}/0').exists();
if (!isChestsExist) { if (!isChestsExist) {
await Directory('${walletsDirectory.path}/0').create(); await Directory('${walletsDirectory.path}/0').create();
await Directory('${walletsDirectory.path}/1').create(); await Directory('${walletsDirectory.path}/1').create();
await File('${walletsDirectory.path}/0/list.conf').create(); await File('${walletsDirectory.path}/0/chest.json').create();
await File('${walletsDirectory.path}/0/order.conf').create(); await File('${walletsDirectory.path}/1/chest.json').create();
await File('${walletsDirectory.path}/1/list.conf').create();
await File('${walletsDirectory.path}/1/order.conf').create();
// getDefaultWallet(); // getDefaultWallet();
} }
await getDefaultWalletAsync();
} }
Future loadGlobalConfig() async {}
int getCurrentChest() { int getCurrentChest() {
File _currentChestFile = File('${walletsDirectory.path}/currentChest.conf'); File _currentChestFile = File('${walletsDirectory.path}/currentChest.conf');
@ -105,29 +104,6 @@ class MyWalletsProvider with ChangeNotifier {
configLines.firstWhere((element) => element.startsWith(_id))); configLines.firstWhere((element) => element.startsWith(_id)));
} }
void getDefaultWallet() {
defaultWalletFile = File('${appPath.path}/defaultWallet');
if (!defaultWalletFile.existsSync()) {
File(defaultWalletFile.path).createSync();
defaultWalletFile.writeAsStringSync("0:0");
}
defaultWallet = getWalletData(defaultWalletFile.readAsStringSync());
}
Future getDefaultWalletAsync() async {
defaultWalletFile = File('${appPath.path}/defaultWallet');
if (!await defaultWalletFile.exists()) {
await File(defaultWalletFile.path).create();
await defaultWalletFile.writeAsString("0:0");
} else {
defaultWallet =
await getWalletDataAsync(await defaultWalletFile.readAsString());
}
}
Future<int> deleteAllWallet(context) async { Future<int> deleteAllWallet(context) async {
MyWalletsProvider _myWalletProvider = MyWalletsProvider _myWalletProvider =
Provider.of<MyWalletsProvider>(context, listen: false); Provider.of<MyWalletsProvider>(context, listen: false);
@ -256,3 +232,34 @@ class WalletData {
return "${this.chest}:${this.number}"; return "${this.chest}:${this.number}";
} }
} }
// Chest data constructor
class ChestData {
String dewif;
Map accounts;
List<int> derivations;
Map<int, String> name;
Map<int, File> avatar;
int defaultWallet;
// Load data from JSON
ChestData(String elements) {
if (elements.isNotEmpty) {
Map<String, dynamic> jsonElements = jsonDecode(elements);
this.dewif = jsonElements['dewif'];
this.accounts = jsonElements['accounts'];
for (int _key in this.accounts.keys) {
derivations.add(_key);
this.name[_key] = this.accounts[_key]['name'];
this.avatar[_key] = this.accounts[_key]['avatar'];
}
}
}
// Representation of ChestData when debugging
@override
String toString() {
return this.accounts.entries.join();
}
}

View File

@ -29,14 +29,14 @@ const String getHistory = r'''
issuers issuers
comment comment
outputs outputs
writtenTime receivedTime
} }
sending { sending {
currency currency
issuers issuers
comment comment
outputs outputs
writtenTime receivedTime
} }
} }
currentUd { currentUd {

View File

@ -146,7 +146,7 @@ class ConfirmStoreWallet extends StatelessWidget with ChangeNotifier {
_myWalletProvider.listWallets = _myWalletProvider.listWallets =
_myWalletProvider _myWalletProvider
.readAllWallets(_currentChest); .readAllWallets(_currentChest);
_myWalletProvider.getDefaultWallet(); // _myWalletProvider.getDefaultWallet();
scheduleMicrotask(() { scheduleMicrotask(() {
_walletOptions.reloadBuild(); _walletOptions.reloadBuild();
_myWalletProvider.rebuildWidget(); _myWalletProvider.rebuildWidget();

View File

@ -46,7 +46,7 @@ class WalletOptions extends StatelessWidget {
_walletOptions.walletID = '0:${wallet.number}'; _walletOptions.walletID = '0:${wallet.number}';
_myWalletProvider.getDefaultWallet(); // _myWalletProvider.getDefaultWallet();
_walletOptions.isDefaultWallet = _walletOptions.isDefaultWallet =
(defaultWallet.id() == _walletOptions.walletID); (defaultWallet.id() == _walletOptions.walletID);

View File

@ -28,7 +28,7 @@ class WalletsHome extends StatelessWidget {
if (myWalletProvider.listWallets.isEmpty) { if (myWalletProvider.listWallets.isEmpty) {
firstWalletDerivation = myWalletProvider.listWallets[0].derivation; firstWalletDerivation = myWalletProvider.listWallets[0].derivation;
myWalletProvider.getDefaultWallet(); // myWalletProvider.getDefaultWallet();
} }
log.d("${myWalletProvider.pinCode},${myWalletProvider.pinLenght}"); log.d("${myWalletProvider.pinCode},${myWalletProvider.pinLenght}");

View File

@ -122,7 +122,7 @@ class OnboardingStepFourteen extends StatelessWidget {
await _generateWalletProvider.storeHDWChest( await _generateWalletProvider.storeHDWChest(
generatedWallet, 'Mon portefeuille courant', context); generatedWallet, 'Mon portefeuille courant', context);
_myWalletProvider.readAllWallets(_currentChest); _myWalletProvider.readAllWallets(_currentChest);
await _myWalletProvider.getDefaultWalletAsync(); // await _myWalletProvider.getDefaultWalletAsync();
scheduleMicrotask(() { scheduleMicrotask(() {
_walletOptions.reloadBuild(); _walletOptions.reloadBuild();
_myWalletProvider.rebuildWidget(); _myWalletProvider.rebuildWidget();