From 33c1149987c107820149f9d9894e79b931c00c96 Mon Sep 17 00:00:00 2001
From: poka <poka@p2p.legal>
Date: Thu, 23 Dec 2021 15:13:58 +0100
Subject: [PATCH] use Durt 0.1.5; Split files between models and proviers; Use
 new appVersion getter for all plateform

---
 lib/globals.dart                              |  9 ++---
 lib/main.dart                                 | 18 +++++-----
 lib/{models => providers}/cesium_plus.dart    |  0
 lib/{models => providers}/change_pin.dart     | 24 ++++++++-----
 lib/{models => providers}/chest_provider.dart |  0
 .../generate_wallets.dart                     |  8 ++---
 lib/{models => providers}/home.dart           | 15 +++-----
 lib/{models => providers}/my_wallets.dart     |  0
 lib/{models => providers}/search.dart         |  2 +-
 lib/{models => providers}/wallet_options.dart | 12 ++++---
 .../wallets_profiles.dart                     |  4 +--
 lib/screens/history.dart                      |  4 +--
 lib/screens/home.dart                         |  8 ++---
 .../myWallets/cesium_wallet_options.dart      |  8 ++---
 lib/screens/myWallets/change_pin.dart         | 16 ++++-----
 lib/screens/myWallets/chest_options.dart      |  4 +--
 lib/screens/myWallets/choose_chest.dart       |  2 +-
 .../myWallets/confirm_wallet_storage.dart     |  4 +--
 lib/screens/myWallets/generate_wallets.dart   |  8 ++---
 .../myWallets/import_cesium_wallet.dart       |  8 ++---
 lib/screens/myWallets/restore_chest.dart      |  2 +-
 lib/screens/myWallets/unlocking_wallet.dart   | 34 ++++++++++---------
 lib/screens/myWallets/wallet_options.dart     |  6 ++--
 lib/screens/myWallets/wallets_home.dart       |  2 +-
 lib/screens/onBoarding/11.dart                |  2 +-
 lib/screens/onBoarding/12.dart                | 12 +++----
 lib/screens/onBoarding/7.dart                 |  2 +-
 lib/screens/onBoarding/8.dart                 |  2 +-
 lib/screens/search.dart                       |  2 +-
 lib/screens/search_result.dart                |  6 ++--
 lib/screens/settings.dart                     |  2 +-
 lib/screens/wallet_view.dart                  |  6 ++--
 pubspec.lock                                  | 11 ++----
 pubspec.yaml                                  |  6 ++--
 34 files changed, 124 insertions(+), 125 deletions(-)
 rename lib/{models => providers}/cesium_plus.dart (100%)
 rename lib/{models => providers}/change_pin.dart (61%)
 rename lib/{models => providers}/chest_provider.dart (100%)
 rename lib/{models => providers}/generate_wallets.dart (98%)
 rename lib/{models => providers}/home.dart (93%)
 rename lib/{models => providers}/my_wallets.dart (100%)
 rename lib/{models => providers}/search.dart (97%)
 rename lib/{models => providers}/wallet_options.dart (95%)
 rename lib/{models => providers}/wallets_profiles.dart (98%)

diff --git a/lib/globals.dart b/lib/globals.dart
index 7ba79266..0f542818 100644
--- a/lib/globals.dart
+++ b/lib/globals.dart
@@ -10,10 +10,11 @@ import 'package:shared_preferences/shared_preferences.dart';
 // Files paths
 Directory? appPath;
 
-String? appVersion;
-SharedPreferences? prefs;
-String? endPointGVA;
-int? ramSys;
+late String appVersion;
+late SharedPreferences prefs;
+late String endPointGVA;
+const int pinLength = 5;
+
 late Box<WalletData> walletBox;
 late Box<ChestData> chestBox;
 late Box configBox;
diff --git a/lib/main.dart b/lib/main.dart
index 5ce5d977..c8917218 100644
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -19,18 +19,18 @@ import 'dart:async';
 import 'dart:io';
 import 'package:flutter/services.dart';
 import 'package:gecko/globals.dart';
-import 'package:gecko/models/cesium_plus.dart';
-import 'package:gecko/models/change_pin.dart';
+import 'package:gecko/providers/cesium_plus.dart';
+import 'package:gecko/providers/change_pin.dart';
 import 'package:gecko/models/chest_data.dart';
-import 'package:gecko/models/chest_provider.dart';
+import 'package:gecko/providers/chest_provider.dart';
 import 'package:gecko/models/g1_wallets_list.dart';
-import 'package:gecko/models/generate_wallets.dart';
-import 'package:gecko/models/wallets_profiles.dart';
-import 'package:gecko/models/home.dart';
-import 'package:gecko/models/my_wallets.dart';
-import 'package:gecko/models/search.dart';
+import 'package:gecko/providers/generate_wallets.dart';
+import 'package:gecko/providers/wallets_profiles.dart';
+import 'package:gecko/providers/home.dart';
+import 'package:gecko/providers/my_wallets.dart';
+import 'package:gecko/providers/search.dart';
 import 'package:gecko/models/wallet_data.dart';
-import 'package:gecko/models/wallet_options.dart';
+import 'package:gecko/providers/wallet_options.dart';
 import 'package:gecko/screens/home.dart';
 import 'package:flutter/material.dart';
 import 'package:gecko/screens/myWallets/wallets_home.dart';
diff --git a/lib/models/cesium_plus.dart b/lib/providers/cesium_plus.dart
similarity index 100%
rename from lib/models/cesium_plus.dart
rename to lib/providers/cesium_plus.dart
diff --git a/lib/models/change_pin.dart b/lib/providers/change_pin.dart
similarity index 61%
rename from lib/models/change_pin.dart
rename to lib/providers/change_pin.dart
index 965c2693..422cf2b9 100644
--- a/lib/models/change_pin.dart
+++ b/lib/providers/change_pin.dart
@@ -9,16 +9,22 @@ class ChangePinProvider with ChangeNotifier {
 
   NewWallet? get badWallet => null;
 
-  NewWallet? changePin(String _oldPin, {String? newCustomPin}) {
+  Future<NewWallet?> changePin(String _oldPin, {String? newCustomPin}) async {
+    final NewWallet newWalletFile;
     try {
-      final _dewif = chestBox.get(configBox.get('currentChest'))!.dewif!;
-
-      // TODO: Durt: Detect if CesiumWallet
-      NewWallet newWalletFile = Dewif().changePassword(
-          dewif: _dewif,
-          oldPassword: _oldPin.toUpperCase(),
-          newPassword: newCustomPin);
-
+      final _chest = chestBox.get(configBox.get('currentChest'))!;
+
+      if (_chest.isCesium!) {
+        newWalletFile = await Dewif().changeCesiumPassword(
+            dewif: _chest.dewif!,
+            oldPassword: _oldPin.toUpperCase(),
+            newPassword: newCustomPin);
+      } else {
+        newWalletFile = await Dewif().changePassword(
+            dewif: _chest.dewif!,
+            oldPassword: _oldPin.toUpperCase(),
+            newPassword: newCustomPin);
+      }
       newPin.text = pinToGive = newWalletFile.password;
       ischangedPin = true;
       // notifyListeners();
diff --git a/lib/models/chest_provider.dart b/lib/providers/chest_provider.dart
similarity index 100%
rename from lib/models/chest_provider.dart
rename to lib/providers/chest_provider.dart
diff --git a/lib/models/generate_wallets.dart b/lib/providers/generate_wallets.dart
similarity index 98%
rename from lib/models/generate_wallets.dart
rename to lib/providers/generate_wallets.dart
index 6cefd849..a364cb12 100644
--- a/lib/models/generate_wallets.dart
+++ b/lib/providers/generate_wallets.dart
@@ -155,8 +155,8 @@ class GenerateWalletsProvider with ChangeNotifier {
   Future<NewWallet?> generateWallet(String generatedMnemonic,
       {required bool isImport}) async {
     try {
-      actualWallet = Dewif().generateDewif(
-          generatedMnemonic, randomSecretCode(5),
+      actualWallet = await Dewif().generateDewif(
+          generatedMnemonic, randomSecretCode(pinLength),
           lang: 'french');
     } catch (e) {
       log.e(e);
@@ -172,7 +172,7 @@ class GenerateWalletsProvider with ChangeNotifier {
   }
 
   String changePinCode({required bool reload}) {
-    pin.text = randomSecretCode(5);
+    pin.text = randomSecretCode(pinLength);
     if (reload) {
       notifyListeners();
     }
@@ -258,7 +258,7 @@ class GenerateWalletsProvider with ChangeNotifier {
 
     log.d(pin.text);
     NewWallet cesiumDewif =
-        Dewif().generateCesiumDewif(cesiumWallet.seed, pin.text);
+        await Dewif().generateCesiumDewif(cesiumWallet.seed, pin.text);
 
     ChestData cesiumChest = ChestData(
         dewif: cesiumDewif.dewif,
diff --git a/lib/models/home.dart b/lib/providers/home.dart
similarity index 93%
rename from lib/models/home.dart
rename to lib/providers/home.dart
index 3160c3c3..07f0a6bd 100644
--- a/lib/models/home.dart
+++ b/lib/providers/home.dart
@@ -8,9 +8,9 @@ import 'package:flutter/services.dart';
 import 'dart:async';
 import 'package:gecko/globals.dart';
 import 'package:hive_flutter/hive_flutter.dart';
-import 'package:package_info/package_info.dart';
 import 'package:flutter/foundation.dart' show kIsWeb;
 import 'package:path_provider/path_provider.dart' as pp;
+import 'package:package_info_plus/package_info_plus.dart';
 
 class HomeProvider with ChangeNotifier {
   bool? isSearching;
@@ -49,14 +49,9 @@ class HomeProvider with ChangeNotifier {
   Future<String> getAppVersion() async {
     String version;
     String buildNumber;
-    if (kIsWeb || Platform.isLinux) {
-      version = "undefined";
-      buildNumber = "undefined";
-    } else {
-      PackageInfo packageInfo = await PackageInfo.fromPlatform();
-      version = packageInfo.version;
-      buildNumber = packageInfo.buildNumber;
-    }
+    PackageInfo packageInfo = await PackageInfo.fromPlatform();
+    version = packageInfo.version;
+    buildNumber = packageInfo.buildNumber;
 
     notifyListeners();
     return version + '+' + buildNumber;
@@ -151,7 +146,7 @@ class HomeProvider with ChangeNotifier {
         _message =
             "Aucun noeud Duniter disponible, veuillez réessayer ultérieurement";
       } else {
-        _message = "Vous êtes connecté au noeud\n${endPointGVA!.split('/')[2]}";
+        _message = "Vous êtes connecté au noeud\n${endPointGVA.split('/')[2]}";
       }
       final snackBar = SnackBar(
           content: Text(_message), duration: const Duration(seconds: 2));
diff --git a/lib/models/my_wallets.dart b/lib/providers/my_wallets.dart
similarity index 100%
rename from lib/models/my_wallets.dart
rename to lib/providers/my_wallets.dart
diff --git a/lib/models/search.dart b/lib/providers/search.dart
similarity index 97%
rename from lib/models/search.dart
rename to lib/providers/search.dart
index d2fd4627..bacad734 100644
--- a/lib/models/search.dart
+++ b/lib/providers/search.dart
@@ -2,7 +2,7 @@ import 'package:dio/dio.dart';
 import 'package:flutter/material.dart';
 import 'package:gecko/globals.dart';
 import 'package:gecko/models/g1_wallets_list.dart';
-import 'package:gecko/models/wallets_profiles.dart';
+import 'package:gecko/providers/wallets_profiles.dart';
 
 class SearchProvider with ChangeNotifier {
   TextEditingController searchController = TextEditingController();
diff --git a/lib/models/wallet_options.dart b/lib/providers/wallet_options.dart
similarity index 95%
rename from lib/models/wallet_options.dart
rename to lib/providers/wallet_options.dart
index 96902756..5427c314 100644
--- a/lib/models/wallet_options.dart
+++ b/lib/providers/wallet_options.dart
@@ -6,7 +6,7 @@ import 'package:flutter/material.dart';
 import 'dart:async';
 import 'package:gecko/globals.dart';
 import 'package:gecko/models/chest_data.dart';
-import 'package:gecko/models/my_wallets.dart';
+import 'package:gecko/providers/my_wallets.dart';
 import 'package:gecko/models/wallet_data.dart';
 import 'package:image_picker/image_picker.dart';
 import 'package:truncate/truncate.dart';
@@ -94,7 +94,7 @@ class WalletOptionsProvider with ChangeNotifier {
   }
 
   int getPinLenght(_walletNbr) {
-    // TODO: Get real Dewif lenght
+    // TODOo: Get real Dewif lenght
     // String _localDewif;
     // if (_walletNbr is int || _walletNbr == null) {
     //   _localDewif = chestBox.get(configBox.get('currentChest')).dewif;
@@ -105,10 +105,11 @@ class WalletOptionsProvider with ChangeNotifier {
     // final int _pinLenght = DubpRust.getDewifSecretCodeLen(
     //     dewif: _localDewif, secretCodeType: SecretCodeType.letters);
 
-    return 5;
+    return pinLength;
   }
 
-  void _renameWallet(List<int?> _walletID, _newName, {required bool isCesium}) async {
+  void _renameWallet(List<int?> _walletID, _newName,
+      {required bool isCesium}) async {
     if (isCesium) {
       ChestData _chestTarget = chestBox.get(_walletID[0])!;
       _chestTarget.name = _newName;
@@ -144,7 +145,8 @@ class WalletOptionsProvider with ChangeNotifier {
   }
 
   Future<int> deleteWallet(context, WalletData wallet) async {
-    final bool _answer = await (_confirmDeletingWallet(context, wallet.name) as FutureOr<bool>);
+    final bool _answer =
+        await (_confirmDeletingWallet(context, wallet.name) as FutureOr<bool>);
 
     if (_answer) {
       walletBox.delete(wallet.key);
diff --git a/lib/models/wallets_profiles.dart b/lib/providers/wallets_profiles.dart
similarity index 98%
rename from lib/models/wallets_profiles.dart
rename to lib/providers/wallets_profiles.dart
index 562b094a..75fc2d60 100644
--- a/lib/models/wallets_profiles.dart
+++ b/lib/providers/wallets_profiles.dart
@@ -3,7 +3,7 @@ import 'dart:io';
 import 'package:durt/durt.dart';
 import 'package:flutter/material.dart';
 import 'package:gecko/globals.dart';
-import 'package:gecko/models/my_wallets.dart';
+import 'package:gecko/providers/my_wallets.dart';
 import 'package:gecko/models/wallet_data.dart';
 import 'package:gecko/screens/wallet_view.dart';
 import 'package:graphql_flutter/graphql_flutter.dart';
@@ -73,7 +73,7 @@ class WalletsProfilesProvider with ChangeNotifier {
       derivation = defaultWallet!.derivation;
     }
 
-    String result = await Gva(node: endPointGVA!).pay(
+    String result = await Gva(node: endPointGVA).pay(
         recipient: pubkey!,
         amount: double.parse(payAmount.text),
         dewif: dewif,
diff --git a/lib/screens/history.dart b/lib/screens/history.dart
index 8ed13fda..315e733d 100644
--- a/lib/screens/history.dart
+++ b/lib/screens/history.dart
@@ -1,8 +1,8 @@
 import 'package:flutter/services.dart';
 import 'package:gecko/globals.dart';
-import 'package:gecko/models/cesium_plus.dart';
+import 'package:gecko/providers/cesium_plus.dart';
 import 'package:gecko/models/queries.dart';
-import 'package:gecko/models/wallets_profiles.dart';
+import 'package:gecko/providers/wallets_profiles.dart';
 import 'package:flutter/material.dart';
 import 'package:gecko/screens/avatar_fullscreen.dart';
 import 'package:gecko/screens/wallet_view.dart';
diff --git a/lib/screens/home.dart b/lib/screens/home.dart
index 0523d23c..7f25c5ae 100644
--- a/lib/screens/home.dart
+++ b/lib/screens/home.dart
@@ -1,10 +1,10 @@
 import 'package:bubble/bubble.dart';
 import 'package:gecko/globals.dart';
-import 'package:gecko/models/chest_provider.dart';
-import 'package:gecko/models/wallets_profiles.dart';
+import 'package:gecko/providers/chest_provider.dart';
+import 'package:gecko/providers/wallets_profiles.dart';
 import 'package:flutter/material.dart';
-import 'package:gecko/models/home.dart';
-import 'package:gecko/models/my_wallets.dart';
+import 'package:gecko/providers/home.dart';
+import 'package:gecko/providers/my_wallets.dart';
 import 'package:gecko/models/wallet_data.dart';
 import 'package:gecko/screens/myWallets/restore_chest.dart';
 import 'package:gecko/screens/myWallets/unlocking_wallet.dart';
diff --git a/lib/screens/myWallets/cesium_wallet_options.dart b/lib/screens/myWallets/cesium_wallet_options.dart
index d71bd466..a08143ad 100644
--- a/lib/screens/myWallets/cesium_wallet_options.dart
+++ b/lib/screens/myWallets/cesium_wallet_options.dart
@@ -4,11 +4,11 @@ import 'dart:ui';
 import 'package:flutter/material.dart';
 import 'package:gecko/globals.dart';
 import 'package:gecko/models/chest_data.dart';
-import 'package:gecko/models/chest_provider.dart';
-import 'package:gecko/models/wallets_profiles.dart';
-import 'package:gecko/models/my_wallets.dart';
+import 'package:gecko/providers/chest_provider.dart';
+import 'package:gecko/providers/wallets_profiles.dart';
+import 'package:gecko/providers/my_wallets.dart';
 import 'package:gecko/models/queries.dart';
-import 'package:gecko/models/wallet_options.dart';
+import 'package:gecko/providers/wallet_options.dart';
 import 'package:gecko/screens/history.dart';
 import 'package:gecko/screens/myWallets/change_pin.dart';
 import 'package:graphql_flutter/graphql_flutter.dart';
diff --git a/lib/screens/myWallets/change_pin.dart b/lib/screens/myWallets/change_pin.dart
index 17b1a823..1366e67b 100644
--- a/lib/screens/myWallets/change_pin.dart
+++ b/lib/screens/myWallets/change_pin.dart
@@ -2,8 +2,8 @@ import 'package:flutter/material.dart';
 import 'package:durt/durt.dart';
 import 'package:flutter/services.dart';
 import 'package:gecko/globals.dart';
-import 'package:gecko/models/change_pin.dart';
-import 'package:gecko/models/my_wallets.dart';
+import 'package:gecko/providers/change_pin.dart';
+import 'package:gecko/providers/my_wallets.dart';
 import 'dart:io';
 import 'package:provider/provider.dart';
 
@@ -49,7 +49,7 @@ class ChangePinScreen extends StatelessWidget with ChangeNotifier {
             child: Column(children: <Widget>[
               StatefulWrapper(
                 onInit: () {
-                  _changePin.newPin.text = randomSecretCode(5);
+                  _changePin.newPin.text = randomSecretCode(pinLength);
                 },
                 child: Container(),
               ),
@@ -80,7 +80,7 @@ class ChangePinScreen extends StatelessWidget with ChangeNotifier {
                     icon: const Icon(Icons.replay),
                     color: orangeC,
                     onPressed: () async {
-                      _changePin.newPin.text = randomSecretCode(5);
+                      _changePin.newPin.text = randomSecretCode(pinLength);
                     },
                   ),
                 ],
@@ -95,12 +95,12 @@ class ChangePinScreen extends StatelessWidget with ChangeNotifier {
                     primary: Colors.green[400], //smoothYellow, // background
                     onPrimary: Colors.black, // foreground
                   ),
-                  onPressed: () {
-                    NewWallet _newWalletFile = _changePin.changePin(
+                  onPressed: () async {
+                    NewWallet? _newWalletFile = await _changePin.changePin(
                         walletProvider.pinCode,
-                        newCustomPin: _changePin.newPin.text)!;
+                        newCustomPin: _changePin.newPin.text);
                     _changePin.newPin.text = '';
-                    _changePin.storeNewPinChest(context, _newWalletFile);
+                    _changePin.storeNewPinChest(context, _newWalletFile!);
                     walletProvider.pinCode = _changePin.newPin.text;
                   },
                   child: const Text(
diff --git a/lib/screens/myWallets/chest_options.dart b/lib/screens/myWallets/chest_options.dart
index 3941562c..5b6e5240 100644
--- a/lib/screens/myWallets/chest_options.dart
+++ b/lib/screens/myWallets/chest_options.dart
@@ -2,8 +2,8 @@ import 'package:flutter/material.dart';
 import 'package:gecko/globals.dart';
 import 'package:gecko/models/chest_data.dart';
 import 'package:flutter/services.dart';
-import 'package:gecko/models/chest_provider.dart';
-import 'package:gecko/models/my_wallets.dart';
+import 'package:gecko/providers/chest_provider.dart';
+import 'package:gecko/providers/my_wallets.dart';
 import 'package:gecko/screens/myWallets/change_pin.dart';
 import 'package:provider/provider.dart';
 
diff --git a/lib/screens/myWallets/choose_chest.dart b/lib/screens/myWallets/choose_chest.dart
index 1d2622f8..a0773691 100644
--- a/lib/screens/myWallets/choose_chest.dart
+++ b/lib/screens/myWallets/choose_chest.dart
@@ -1,6 +1,6 @@
 import 'package:flutter/services.dart';
 import 'package:gecko/globals.dart';
-import 'package:gecko/models/my_wallets.dart';
+import 'package:gecko/providers/my_wallets.dart';
 import 'package:gecko/models/wallet_data.dart';
 import 'package:flutter/material.dart';
 import 'package:gecko/screens/myWallets/generate_wallets.dart';
diff --git a/lib/screens/myWallets/confirm_wallet_storage.dart b/lib/screens/myWallets/confirm_wallet_storage.dart
index 5e86205a..b7cd5222 100644
--- a/lib/screens/myWallets/confirm_wallet_storage.dart
+++ b/lib/screens/myWallets/confirm_wallet_storage.dart
@@ -3,8 +3,8 @@ import 'package:durt/durt.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter/services.dart';
 import 'package:gecko/globals.dart';
-import 'package:gecko/models/generate_wallets.dart';
-import 'package:gecko/models/my_wallets.dart';
+import 'package:gecko/providers/generate_wallets.dart';
+import 'package:gecko/providers/my_wallets.dart';
 import 'package:gecko/screens/myWallets/unlocking_wallet.dart';
 import 'package:provider/provider.dart';
 
diff --git a/lib/screens/myWallets/generate_wallets.dart b/lib/screens/myWallets/generate_wallets.dart
index 74eafeb8..17204d6c 100644
--- a/lib/screens/myWallets/generate_wallets.dart
+++ b/lib/screens/myWallets/generate_wallets.dart
@@ -1,7 +1,7 @@
 import 'package:durt/durt.dart';
 import 'package:flutter/services.dart';
 import 'package:gecko/globals.dart';
-import 'package:gecko/models/generate_wallets.dart';
+import 'package:gecko/providers/generate_wallets.dart';
 import 'package:gecko/screens/myWallets/confirm_wallet_storage.dart';
 import 'package:flutter/material.dart';
 import 'package:printing/printing.dart';
@@ -31,7 +31,7 @@ class GenerateFastChestScreen extends StatelessWidget {
       _generateWalletProvider.generateWordList();
       _generateWalletProvider.mnemonicController.text =
           _generateWalletProvider.generatedMnemonic!;
-      _generateWalletProvider.pin.text = randomSecretCode(5);
+      _generateWalletProvider.pin.text = randomSecretCode(pinLength);
     }
 
     return Scaffold(
@@ -115,8 +115,8 @@ class GenerateFastChestScreen extends StatelessWidget {
                             ? () async {
                                 _generateWalletProvider.nbrWord =
                                     _generateWalletProvider.getRandomInt();
-                                _generateWalletProvider.actualWallet = Dewif()
-                                    .generateDewif(
+                                _generateWalletProvider.actualWallet =
+                                    await Dewif().generateDewif(
                                         _generateWalletProvider
                                             .generatedMnemonic!,
                                         _generateWalletProvider.pin.text,
diff --git a/lib/screens/myWallets/import_cesium_wallet.dart b/lib/screens/myWallets/import_cesium_wallet.dart
index 84a1052d..ff707f1d 100644
--- a/lib/screens/myWallets/import_cesium_wallet.dart
+++ b/lib/screens/myWallets/import_cesium_wallet.dart
@@ -2,11 +2,11 @@ import 'dart:async';
 import 'package:durt/durt.dart';
 import 'package:flutter/services.dart';
 import 'package:gecko/globals.dart';
-import 'package:gecko/models/generate_wallets.dart';
+import 'package:gecko/providers/generate_wallets.dart';
 import 'package:flutter/material.dart';
-import 'package:gecko/models/my_wallets.dart';
+import 'package:gecko/providers/my_wallets.dart';
 import 'package:gecko/models/wallet_data.dart';
-import 'package:gecko/models/wallet_options.dart';
+import 'package:gecko/providers/wallet_options.dart';
 import 'package:gecko/screens/myWallets/unlocking_wallet.dart';
 import 'package:provider/provider.dart';
 
@@ -25,7 +25,7 @@ class ImportWalletScreen extends StatelessWidget {
     MyWalletsProvider _myWalletProvider =
         Provider.of<MyWalletsProvider>(context, listen: false);
 
-    _generateWalletProvider.pin.text = randomSecretCode(5);
+    _generateWalletProvider.pin.text = randomSecretCode(pinLength);
     return WillPopScope(
       onWillPop: () {
         _generateWalletProvider.resetCesiumImportView();
diff --git a/lib/screens/myWallets/restore_chest.dart b/lib/screens/myWallets/restore_chest.dart
index 2e1f4776..79c798e8 100644
--- a/lib/screens/myWallets/restore_chest.dart
+++ b/lib/screens/myWallets/restore_chest.dart
@@ -2,7 +2,7 @@ import 'package:bubble/bubble.dart';
 import 'package:flutter/services.dart';
 import 'package:gecko/globals.dart';
 import 'package:flutter/material.dart';
-import 'package:gecko/models/generate_wallets.dart';
+import 'package:gecko/providers/generate_wallets.dart';
 import 'package:gecko/screens/common_elements.dart';
 import 'package:gecko/screens/onBoarding/11.dart';
 import 'package:provider/provider.dart';
diff --git a/lib/screens/myWallets/unlocking_wallet.dart b/lib/screens/myWallets/unlocking_wallet.dart
index 3e3f71a6..ba9b3554 100644
--- a/lib/screens/myWallets/unlocking_wallet.dart
+++ b/lib/screens/myWallets/unlocking_wallet.dart
@@ -1,10 +1,10 @@
 import 'dart:async';
 import 'package:flutter/services.dart';
 import 'package:gecko/models/chest_data.dart';
-import 'package:gecko/models/wallets_profiles.dart';
-import 'package:gecko/models/my_wallets.dart';
+import 'package:gecko/providers/wallets_profiles.dart';
+import 'package:gecko/providers/my_wallets.dart';
 import 'package:gecko/models/wallet_data.dart';
-import 'package:gecko/models/wallet_options.dart';
+import 'package:gecko/providers/wallet_options.dart';
 import 'package:flutter/material.dart';
 import 'package:gecko/screens/myWallets/cesium_wallet_options.dart';
 import 'package:gecko/screens/myWallets/choose_chest.dart';
@@ -52,21 +52,22 @@ class UnlockingWallet extends StatelessWidget {
           crossAxisAlignment: CrossAxisAlignment.start,
           children: <Widget>[
             Stack(children: <Widget>[
-            Positioned(
-              top: statusBarHeight + 10,
-              left: 15,
-              child: Builder(
-                builder: (context) => IconButton(
-                  key: const Key('popButton'),
-                  icon: const Icon(
-                    Icons.arrow_back,
-                    color: Colors.black,
-                    size: 25,
+              Positioned(
+                top: statusBarHeight + 10,
+                left: 15,
+                child: Builder(
+                  builder: (context) => IconButton(
+                    key: const Key('popButton'),
+                    icon: const Icon(
+                      Icons.arrow_back,
+                      color: Colors.black,
+                      size: 25,
+                    ),
+                    onPressed: () => Navigator.pop(context),
                   ),
-                  onPressed: () => Navigator.pop(context),
                 ),
               ),
-            ),Column(children: <Widget>[
+              Column(children: <Widget>[
                 SizedBox(height: isTall ? 100 : 20),
                 Row(
                     mainAxisAlignment: MainAxisAlignment.center,
@@ -129,7 +130,8 @@ class UnlockingWallet extends StatelessWidget {
                       ),
                     )),
               ]),
-          ]),]),
+            ]),
+          ]),
     ));
   }
 
diff --git a/lib/screens/myWallets/wallet_options.dart b/lib/screens/myWallets/wallet_options.dart
index 9585b44c..519e212b 100644
--- a/lib/screens/myWallets/wallet_options.dart
+++ b/lib/screens/myWallets/wallet_options.dart
@@ -3,11 +3,11 @@ import 'dart:io';
 import 'dart:ui';
 import 'package:flutter/material.dart';
 import 'package:gecko/globals.dart';
-import 'package:gecko/models/my_wallets.dart';
+import 'package:gecko/providers/my_wallets.dart';
 import 'package:gecko/models/queries.dart';
 import 'package:gecko/models/wallet_data.dart';
-import 'package:gecko/models/wallet_options.dart';
-import 'package:gecko/models/wallets_profiles.dart';
+import 'package:gecko/providers/wallet_options.dart';
+import 'package:gecko/providers/wallets_profiles.dart';
 import 'package:gecko/screens/history.dart';
 import 'package:graphql_flutter/graphql_flutter.dart';
 import 'package:provider/provider.dart';
diff --git a/lib/screens/myWallets/wallets_home.dart b/lib/screens/myWallets/wallets_home.dart
index f3057c9c..95c2ec66 100644
--- a/lib/screens/myWallets/wallets_home.dart
+++ b/lib/screens/myWallets/wallets_home.dart
@@ -1,7 +1,7 @@
 import 'package:flutter/services.dart';
 import 'package:gecko/globals.dart';
 import 'package:gecko/models/chest_data.dart';
-import 'package:gecko/models/my_wallets.dart';
+import 'package:gecko/providers/my_wallets.dart';
 import 'package:gecko/models/queries.dart';
 import 'package:gecko/models/wallet_data.dart';
 import 'package:flutter/material.dart';
diff --git a/lib/screens/onBoarding/11.dart b/lib/screens/onBoarding/11.dart
index 9c670eba..0c882224 100644
--- a/lib/screens/onBoarding/11.dart
+++ b/lib/screens/onBoarding/11.dart
@@ -2,7 +2,7 @@
 import 'package:flutter/services.dart';
 import 'package:flutter/material.dart';
 import 'package:gecko/globals.dart';
-import 'package:gecko/models/generate_wallets.dart';
+import 'package:gecko/providers/generate_wallets.dart';
 import 'package:gecko/screens/common_elements.dart';
 import 'package:gecko/screens/onBoarding/12.dart';
 import 'package:provider/provider.dart';
diff --git a/lib/screens/onBoarding/12.dart b/lib/screens/onBoarding/12.dart
index 05345e2a..97b66f5a 100644
--- a/lib/screens/onBoarding/12.dart
+++ b/lib/screens/onBoarding/12.dart
@@ -5,9 +5,9 @@ import 'package:durt/durt.dart';
 import 'package:flutter/services.dart';
 import 'package:flutter/material.dart';
 import 'package:gecko/globals.dart';
-import 'package:gecko/models/generate_wallets.dart';
-import 'package:gecko/models/my_wallets.dart';
-import 'package:gecko/models/wallet_options.dart';
+import 'package:gecko/providers/generate_wallets.dart';
+import 'package:gecko/providers/my_wallets.dart';
+import 'package:gecko/providers/wallet_options.dart';
 import 'package:gecko/screens/common_elements.dart';
 import 'package:gecko/screens/onBoarding/13_congratulations.dart';
 import 'package:pin_code_fields/pin_code_fields.dart';
@@ -111,17 +111,17 @@ class OnboardingStepFourteen extends StatelessWidget {
                 blurRadius: 10,
               )
             ],
-            onCompleted: (_pin) {
+            onCompleted: (_pin) async {
               _myWalletProvider.pinCode = _pin;
               _myWalletProvider.pinLenght = _pinLenght;
               log.d(_pin + ' || ' + _generateWalletProvider.pin.text);
               if (_pin.toUpperCase() == _generateWalletProvider.pin.text) {
                 pinColor = Colors.green[500];
-                NewWallet generatedWallet = Dewif().generateDewif(
+                NewWallet generatedWallet = await Dewif().generateDewif(
                     _generateWalletProvider.generatedMnemonic!,
                     _generateWalletProvider.pin.text,
                     lang: 'french');
-                _generateWalletProvider.storeHDWChest(
+                await _generateWalletProvider.storeHDWChest(
                     generatedWallet, 'Mon portefeuille courant', context);
                 _myWalletProvider.readAllWallets(_currentChest);
                 scheduleMicrotask(() {
diff --git a/lib/screens/onBoarding/7.dart b/lib/screens/onBoarding/7.dart
index cda32c85..c2d96c3e 100644
--- a/lib/screens/onBoarding/7.dart
+++ b/lib/screens/onBoarding/7.dart
@@ -3,7 +3,7 @@
 import 'package:flutter/services.dart';
 import 'package:flutter/material.dart';
 import 'package:gecko/globals.dart';
-import 'package:gecko/models/generate_wallets.dart';
+import 'package:gecko/providers/generate_wallets.dart';
 import 'package:gecko/screens/common_elements.dart';
 import 'package:gecko/screens/onBoarding/8.dart';
 import 'package:printing/printing.dart';
diff --git a/lib/screens/onBoarding/8.dart b/lib/screens/onBoarding/8.dart
index cca13109..c9ec4ca9 100644
--- a/lib/screens/onBoarding/8.dart
+++ b/lib/screens/onBoarding/8.dart
@@ -2,7 +2,7 @@
 import 'package:flutter/services.dart';
 import 'package:flutter/material.dart';
 import 'package:gecko/globals.dart';
-import 'package:gecko/models/generate_wallets.dart';
+import 'package:gecko/providers/generate_wallets.dart';
 import 'package:gecko/screens/common_elements.dart';
 import 'package:gecko/screens/onBoarding/9.dart';
 import 'package:provider/provider.dart';
diff --git a/lib/screens/search.dart b/lib/screens/search.dart
index 5357a244..25a2513f 100644
--- a/lib/screens/search.dart
+++ b/lib/screens/search.dart
@@ -1,7 +1,7 @@
 import 'package:flutter/services.dart';
 import 'package:gecko/globals.dart';
 import 'package:flutter/material.dart';
-import 'package:gecko/models/search.dart';
+import 'package:gecko/providers/search.dart';
 import 'package:gecko/screens/search_result.dart';
 import 'package:provider/provider.dart';
 // import 'package:gecko/models/home.dart';
diff --git a/lib/screens/search_result.dart b/lib/screens/search_result.dart
index fabf899e..347aacea 100644
--- a/lib/screens/search_result.dart
+++ b/lib/screens/search_result.dart
@@ -1,10 +1,10 @@
 import 'package:flutter/services.dart';
 import 'package:gecko/globals.dart';
 import 'package:flutter/material.dart';
-import 'package:gecko/models/cesium_plus.dart';
+import 'package:gecko/providers/cesium_plus.dart';
 import 'package:gecko/models/g1_wallets_list.dart';
-import 'package:gecko/models/wallets_profiles.dart';
-import 'package:gecko/models/search.dart';
+import 'package:gecko/providers/wallets_profiles.dart';
+import 'package:gecko/providers/search.dart';
 import 'package:gecko/screens/wallet_view.dart';
 import 'package:provider/provider.dart';
 
diff --git a/lib/screens/settings.dart b/lib/screens/settings.dart
index 8e69cdb3..8ce70c29 100644
--- a/lib/screens/settings.dart
+++ b/lib/screens/settings.dart
@@ -1,7 +1,7 @@
 import 'package:flutter/material.dart';
 import 'package:durt/durt.dart';
 import 'package:flutter/services.dart';
-import 'package:gecko/models/my_wallets.dart';
+import 'package:gecko/providers/my_wallets.dart';
 import 'package:gecko/screens/myWallets/generate_wallets.dart';
 import 'dart:io';
 import 'package:gecko/screens/myWallets/import_cesium_wallet.dart';
diff --git a/lib/screens/wallet_view.dart b/lib/screens/wallet_view.dart
index f2729484..f9db775d 100644
--- a/lib/screens/wallet_view.dart
+++ b/lib/screens/wallet_view.dart
@@ -1,10 +1,10 @@
 import 'package:flutter/services.dart';
 import 'package:gecko/globals.dart';
 import 'package:flutter/material.dart';
-import 'package:gecko/models/cesium_plus.dart';
-import 'package:gecko/models/my_wallets.dart';
+import 'package:gecko/providers/cesium_plus.dart';
+import 'package:gecko/providers/my_wallets.dart';
 import 'package:gecko/models/wallet_data.dart';
-import 'package:gecko/models/wallets_profiles.dart';
+import 'package:gecko/providers/wallets_profiles.dart';
 import 'package:gecko/models/queries.dart';
 import 'package:gecko/screens/avatar_fullscreen.dart';
 import 'package:gecko/screens/common_elements.dart';
diff --git a/pubspec.lock b/pubspec.lock
index 8d8688f2..b5a2db7c 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -301,7 +301,7 @@ packages:
       name: durt
       url: "https://pub.dartlang.org"
     source: hosted
-    version: "0.1.4"
+    version: "0.1.5"
   fake_async:
     dependency: transitive
     description:
@@ -696,15 +696,8 @@ packages:
       url: "https://pub.dartlang.org"
     source: hosted
     version: "2.0.2"
-  package_info:
-    dependency: "direct main"
-    description:
-      name: package_info
-      url: "https://pub.dartlang.org"
-    source: hosted
-    version: "2.0.2"
   package_info_plus:
-    dependency: transitive
+    dependency: "direct main"
     description:
       name: package_info_plus
       url: "https://pub.dartlang.org"
diff --git a/pubspec.yaml b/pubspec.yaml
index a240afe0..c6b55fbb 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -5,7 +5,7 @@ description: Pay with G1.
 # 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.4+4
+version: 0.0.4+5
 
 environment:
   sdk: '>=2.12.0 <3.0.0'
@@ -39,7 +39,6 @@ dependencies:
   intl: ^0.17.0
   jdenticon_dart: ^2.0.0
   logger: ^1.1.0
-  package_info: ^2.0.2
   path_provider: ^2.0.3
   pdf: ^3.5.0
   permission_handler: ^8.3.0
@@ -63,7 +62,8 @@ dependencies:
   pull_to_refresh: ^2.0.0
   dio: ^4.0.4
   desktop_window: ^0.4.0
-  durt: ^0.1.4
+  durt: ^0.1.5
+  package_info_plus: ^1.3.0
 
 flutter_icons:
   android: "ic_launcher"
-- 
GitLab