WIP: constructor ChestData, json deserialisation, ect...

This commit is contained in:
poka 2021-05-21 02:43:57 +02:00
parent 62c6a0aa15
commit 97c566f429
3 changed files with 42 additions and 33 deletions

View File

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

View File

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

View File

@ -4,6 +4,7 @@ import 'package:flutter/material.dart';
import 'dart:async';
import 'package:gecko/globals.dart';
import 'package:provider/provider.dart';
import 'dart:convert';
class MyWalletsProvider with ChangeNotifier {
List<WalletData> listWallets = [];
@ -11,32 +12,30 @@ class MyWalletsProvider with ChangeNotifier {
int pinLenght;
Future initWalletFolder() async {
// getDefaultWallet();
final bool isWalletFolderExist = await walletsDirectory.exists();
if (!isWalletFolderExist) {
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 _currentChestFile.writeAsString('0');
await globalConf.create();
await globalConf.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();
await File('${walletsDirectory.path}/0/chest.json').create();
await File('${walletsDirectory.path}/1/chest.json').create();
// getDefaultWallet();
}
await getDefaultWalletAsync();
}
Future loadGlobalConfig() async {}
int getCurrentChest() {
File _currentChestFile = File('${walletsDirectory.path}/currentChest.conf');
@ -105,29 +104,6 @@ class MyWalletsProvider with ChangeNotifier {
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 {
MyWalletsProvider _myWalletProvider =
Provider.of<MyWalletsProvider>(context, listen: false);
@ -256,3 +232,34 @@ class WalletData {
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();
}
}