From bde1028c70486f96a89e4a436e9fe6ccb43f24dc Mon Sep 17 00:00:00 2001
From: poka <poka@p2p.legal>
Date: Thu, 18 Feb 2021 04:42:57 +0100
Subject: [PATCH] Fix bugs reports in forum; change Sentry mode

---
 android/app/build.gradle                   |   1 +
 assets/qrcode-scan.png                     | Bin 0 -> 6713 bytes
 lib/main.dart                              |  96 +++++++++++++++------
 lib/models/generateWallets.dart            |  43 ++++-----
 lib/models/history.dart                    |  10 +--
 lib/models/home.dart                       |   4 +
 lib/screens/history.dart                   |   8 +-
 lib/screens/home.dart                      |   7 +-
 lib/screens/myWallets/generateWallets.dart |   2 +
 lib/screens/myWallets/importWallet.dart    |  23 +----
 lib/screens/myWallets/walletsHome.dart     |   8 +-
 pubspec.lock                               |  83 +++++++++++++++++-
 pubspec.yaml                               |  10 ++-
 13 files changed, 203 insertions(+), 92 deletions(-)
 create mode 100644 assets/qrcode-scan.png

diff --git a/android/app/build.gradle b/android/app/build.gradle
index 0038032f..c892da86 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -49,6 +49,7 @@ android {
         targetSdkVersion 29
         versionCode flutterVersionCode.toInteger()
         versionName flutterVersionName
+        multiDexEnabled true
     }
 
     signingConfigs {
diff --git a/assets/qrcode-scan.png b/assets/qrcode-scan.png
new file mode 100644
index 0000000000000000000000000000000000000000..acd14345289f834eaf1e52ba98d4a856b954c6f6
GIT binary patch
literal 6713
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

literal 0
HcmV?d00001

diff --git a/lib/main.dart b/lib/main.dart
index 700fe124..eabf207b 100644
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -12,45 +12,84 @@ import 'package:flutter/cupertino.dart';
 import 'package:flutter/material.dart';
 import 'package:graphql_flutter/graphql_flutter.dart';
 import 'package:provider/provider.dart';
-import 'package:sentry_flutter/sentry_flutter.dart';
 import 'package:flutter/foundation.dart';
 import 'package:shared_preferences/shared_preferences.dart';
+import 'package:sentry_flutter/sentry_flutter.dart';
+import 'package:catcher/catcher.dart';
 
-final bool enableSentry = true;
+// import 'dart:io';
+// import 'package:flutter_logs/flutter_logs.dart';
+// import 'package:downloads_path_provider/downloads_path_provider.dart';
 
-// Future<String> getJsonEndpoints() {
-//   return rootBundle.loadString('config/gva_endpoints.json');
-// }
+final bool enableSentry = true;
 
 Future<void> main() async {
-  WidgetsFlutterBinding.ensureInitialized();
-  HomeProvider _homeProvider = HomeProvider();
-  await _homeProvider.getAppPath();
-  await _homeProvider.createDefaultAvatar();
-  appVersion = await _homeProvider.getAppVersion();
-  prefs = await SharedPreferences.getInstance();
-  final HiveStore _store =
-      await HiveStore.open(path: '${appPath.path}/gqlCache');
+  try {
+    WidgetsFlutterBinding.ensureInitialized();
 
-  // Get a valid GVA endpoint
-  endPointGVA = await _homeProvider.getValidEndpoint();
+    // var downloadsDirectory = DownloadsPathProvider.downloadsDirectory;
+    // File logFile = File(downloadsDirectory.toString() + '/gecko.log');
 
-  if (kReleaseMode && enableSentry) {
-    await SentryFlutter.init(
-      (options) {
-        options.dsn =
-            'https://c09587b46eaa42e8b9fda28d838ed180@o496840.ingest.sentry.io/5572110';
-      },
-      appRunner: () => runApp(Gecko(endPointGVA, _store)),
-    );
-  } else {
-    print('Debug mode enabled: No sentry alerte');
+    // await FlutterLogs.initLogs(
+    //     logLevelsEnabled: [
+    //       LogLevel.INFO,
+    //       LogLevel.WARNING,
+    //       LogLevel.ERROR,
+    //       LogLevel.SEVERE
+    //     ],
+    //     timeStampFormat: TimeStampFormat.TIME_FORMAT_READABLE,
+    //     directoryStructure: DirectoryStructure.FOR_EVENT,
+    //     logTypesEnabled: ["Locations", "APIs"],
+    //     logFileExtension: LogFileExtension.LOG,
+    //     logsWriteDirectoryName: downloadsDirectory.toString(),
+    //     logsExportDirectoryName: downloadsDirectory.toString());
+
+    HomeProvider _homeProvider = HomeProvider();
+    await _homeProvider.getAppPath();
+    await _homeProvider.createDefaultAvatar();
+    appVersion = await _homeProvider.getAppVersion();
+    prefs = await SharedPreferences.getInstance();
+    final HiveStore _store =
+        await HiveStore.open(path: '${appPath.path}/gqlCache');
 
-    runApp(Gecko(endPointGVA, _store));
+    // Get a valid GVA endpoint
+    endPointGVA = await _homeProvider.getValidEndpoint();
+
+    if (kReleaseMode &&  enableSentry) {
+      CatcherOptions debugOptions = CatcherOptions(DialogReportMode(), [
+        SentryHandler(SentryClient(SentryOptions(
+            dsn:
+                "https://c09587b46eaa42e8b9fda28d838ed180@o496840.ingest.sentry.io/5572110")))
+      ]);
+      // CatcherOptions releaseOptions = CatcherOptions(NotificationReportMode(), [
+      //   EmailManualHandler(["poka@p2p.legal"])
+      // ]);
+      Catcher(
+          rootWidget: Gecko(endPointGVA, _store), debugConfig: debugOptions);
+
+      // await SentryFlutter.init(
+      //   (options) {
+      //     options.dsn =
+      //         'https://c09587b46eaa42e8b9fda28d838ed180@o496840.ingest.sentry.io/5572110';
+      //   },
+      //   appRunner: () => runApp(Gecko(endPointGVA, _store)),
+      // );
+    } else {
+      print('Debug mode enabled: No sentry alerte');
+
+      runApp(Gecko(endPointGVA, _store));
+    }
+  } catch (e, stack) {
+    print(e);
+    if (kReleaseMode) {
+      await Sentry.captureException(
+        e,
+        stackTrace: stack,
+      );
+    }
   }
 }
 
-// ignore: must_be_immutable
 class Gecko extends StatelessWidget {
   Gecko(this.randomEndpoint, this._store);
   final String randomEndpoint;
@@ -68,8 +107,8 @@ class Gecko extends StatelessWidget {
         link: _httpLink,
       ),
     );
-
     DubpRust.setup();
+
     return MultiProvider(
         providers: [
           // Provider(create: (context) => HistoryProvider()),
@@ -84,6 +123,7 @@ class Gecko extends StatelessWidget {
         child: GraphQLProvider(
             client: _client,
             child: MaterialApp(
+              navigatorKey: Catcher.navigatorKey,
               title: 'Ğecko',
               theme: ThemeData(
                 primaryColor: Color(0xffFFD58D),
diff --git a/lib/models/generateWallets.dart b/lib/models/generateWallets.dart
index 77f1431d..d7947eb1 100644
--- a/lib/models/generateWallets.dart
+++ b/lib/models/generateWallets.dart
@@ -7,7 +7,6 @@ import 'package:flutter/foundation.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter/services.dart';
 import 'package:gecko/globals.dart';
-import 'package:sentry_flutter/sentry_flutter.dart' as sentry;
 import 'package:pdf/pdf.dart';
 import 'package:pdf/widgets.dart' as pw;
 import 'package:printing/printing.dart';
@@ -81,6 +80,9 @@ class GenerateWalletsProvider with ChangeNotifier {
           .writeAsString('$nbrWallet:$_name:$_derivationNbr:$_pubkey');
     }
 
+    print('CODE PIN :::');
+    print(wallet.pin);
+
     Navigator.pop(context, true);
 
     return _name;
@@ -147,14 +149,8 @@ class GenerateWalletsProvider with ChangeNotifier {
       this.actualWallet = await generateWallet(this.generatedMnemonic);
       walletIsGenerated = true;
       // notifyListeners();
-    } catch (e, stack) {
+    } catch (e) {
       print(e);
-      if (kReleaseMode) {
-        await sentry.Sentry.captureException(
-          e,
-          stackTrace: stack,
-        );
-      }
     }
     // await checkIfWalletExist();
     return generatedMnemonic;
@@ -167,14 +163,8 @@ class GenerateWalletsProvider with ChangeNotifier {
           mnemonic: generatedMnemonic,
           secretCodeType: SecretCodeType.letters,
           walletType: WalletType.bip32Ed25519);
-    } catch (e, stack) {
+    } catch (e) {
       print(e);
-      if (kReleaseMode) {
-        await sentry.Sentry.captureException(
-          e,
-          stackTrace: stack,
-        );
-      }
     }
 
     mnemonicController.text = generatedMnemonic;
@@ -243,6 +233,8 @@ class GenerateWalletsProvider with ChangeNotifier {
         salt: _cesiumID, password: _cesiumPWD);
 
     cesiumPubkey.text = _walletPubkey;
+    pin.text = actualWallet.pin;
+    isPinChanged = true;
     print(_walletPubkey);
   }
 
@@ -274,13 +266,24 @@ class GenerateWalletsProvider with ChangeNotifier {
     notifyListeners();
   }
 
-  void showPinIfEmpty() {
-    if (!isPinChanged) {
-      changePinCode(reload: true);
-      isPinChanged = true;
-    }
+  void resetImportView() {
+    cesiumID.text = '';
+    cesiumPWD.text = '';
+    cesiumPubkey.text = '';
+    pin.text = '';
+    canImport = false;
+    isPinChanged = false;
+    isCesiumIDVisible = false;
+    isCesiumPWDVisible = false;
+    actualWallet = null;
+    notifyListeners();
   }
 
+  // void makeError() {
+  //   var tata = File(appPath.path + '/ddfhjftjfg');
+  //   tata.readAsLinesSync();
+  // }
+
   void reloadBuild() {
     notifyListeners();
   }
diff --git a/lib/models/history.dart b/lib/models/history.dart
index da3ce264..0b6f6fb6 100644
--- a/lib/models/history.dart
+++ b/lib/models/history.dart
@@ -3,7 +3,6 @@ import 'package:flutter/material.dart';
 import 'package:gecko/globals.dart';
 import 'package:graphql_flutter/graphql_flutter.dart';
 import 'package:permission_handler/permission_handler.dart';
-import 'package:sentry/sentry.dart' as sentry;
 import 'package:qrscan/qrscan.dart' as scanner;
 import 'dart:math';
 import 'package:intl/intl.dart';
@@ -28,14 +27,8 @@ class HistoryProvider with ChangeNotifier {
     String barcode;
     try {
       barcode = await scanner.scan();
-    } catch (e, stack) {
+    } catch (e) {
       print(e);
-      if (kReleaseMode) {
-        await sentry.Sentry.captureException(
-          e,
-          stackTrace: stack,
-        );
-      }
       return 'false';
     }
     if (barcode != null) {
@@ -63,7 +56,6 @@ class HistoryProvider with ChangeNotifier {
       getShortPubkey(pubkey);
 
       this.outputPubkey.text = pubkey;
-      print(pubkeyShort);
 
       isHistoryScreen = false;
       historySwitchButtun = "Voir l'historique";
diff --git a/lib/models/home.dart b/lib/models/home.dart
index 9d854de8..69287288 100644
--- a/lib/models/home.dart
+++ b/lib/models/home.dart
@@ -6,6 +6,8 @@ import 'package:flutter/material.dart';
 import 'package:flutter/services.dart';
 import 'dart:async';
 import 'package:gecko/globals.dart';
+import 'package:gecko/screens/history.dart';
+import 'package:gecko/screens/myWallets/walletsHome.dart';
 import 'package:package_info/package_info.dart';
 import 'package:path_provider/path_provider.dart';
 
@@ -15,6 +17,8 @@ class HomeProvider with ChangeNotifier {
   Icon searchIcon = Icon(Icons.search);
   final TextEditingController searchQuery = new TextEditingController();
   Widget appBarTitle = Text('Ğecko', style: TextStyle(color: Colors.grey[850]));
+  List currentTab = [HistoryScreen(), WalletsHome()];
+
 
   get currentIndex => _currentIndex;
 
diff --git a/lib/screens/history.dart b/lib/screens/history.dart
index 12c5d2b0..a46980c0 100644
--- a/lib/screens/history.dart
+++ b/lib/screens/history.dart
@@ -48,7 +48,9 @@ class HistoryScreen extends StatelessWidget with ChangeNotifier {
               child: Container(
                   height: 40.0,
                   width: 40.0,
-                  child: Image.asset('images/scanner.png')),
+                  child: Padding(
+                      padding: EdgeInsets.symmetric(horizontal: 3),
+                      child: Image.asset('assets/qrcode-scan.png'))),
               backgroundColor: Color(
                   0xffEFEFBF), //Color(0xffFFD68E), //Color.fromARGB(500, 204, 255, 255),
             ),
@@ -174,7 +176,9 @@ class HistoryScreen extends StatelessWidget with ChangeNotifier {
                                     text: _historyProvider.pubkey));
                                 _historyProvider.snackCopyKey(context);
                               },
-                              child: Text(_historyProvider.pubkeyShort,
+                              child: Text(
+                                  _historyProvider
+                                      .getShortPubkey(_historyProvider.pubkey),
                                   style: TextStyle(
                                       fontSize: 22,
                                       fontWeight: FontWeight.w800,
diff --git a/lib/screens/home.dart b/lib/screens/home.dart
index dc5ca63c..31324437 100644
--- a/lib/screens/home.dart
+++ b/lib/screens/home.dart
@@ -1,17 +1,12 @@
 import 'package:gecko/globals.dart';
 import 'package:gecko/models/history.dart';
 import 'package:gecko/models/home.dart';
-import 'package:gecko/screens/history.dart';
 import 'package:flutter/material.dart';
 import 'dart:ui';
-import 'package:gecko/screens/myWallets/walletsHome.dart';
 import 'package:gecko/screens/settings.dart';
 import 'package:provider/provider.dart';
 
-// ignore: must_be_immutable
 class HomeScreen extends StatelessWidget {
-  var currentTab = [HistoryScreen(), WalletsHome()];
-
   @override
   Widget build(BuildContext context) {
     HomeProvider _homeProvider = Provider.of<HomeProvider>(context);
@@ -116,7 +111,7 @@ class HomeScreen extends StatelessWidget {
         backgroundColor: Color(0xffFFD58D),
       ),
       backgroundColor: Color(0xffF9F9F1),
-      body: currentTab[_homeProvider.currentIndex],
+      body: _homeProvider.currentTab[_homeProvider.currentIndex],
       bottomNavigationBar: BottomNavigationBar(
         backgroundColor: Color(0xffFFD58D),
         fixedColor: Colors.grey[850],
diff --git a/lib/screens/myWallets/generateWallets.dart b/lib/screens/myWallets/generateWallets.dart
index 0c163216..9b2f9fbb 100644
--- a/lib/screens/myWallets/generateWallets.dart
+++ b/lib/screens/myWallets/generateWallets.dart
@@ -21,6 +21,8 @@ class GenerateWalletsScreen extends StatelessWidget {
     GenerateWalletsProvider _generateWalletProvider =
         Provider.of<GenerateWalletsProvider>(context);
     _generateWalletProvider.generateMnemonic();
+
+    // _generateWalletProvider.makeError();
     print('IS GENERATED ? : ' +
         _generateWalletProvider.walletIsGenerated.toString());
     return Scaffold(
diff --git a/lib/screens/myWallets/importWallet.dart b/lib/screens/myWallets/importWallet.dart
index 2a548af3..5955469c 100644
--- a/lib/screens/myWallets/importWallet.dart
+++ b/lib/screens/myWallets/importWallet.dart
@@ -18,19 +18,9 @@ class ImportWalletScreen extends StatelessWidget {
     WalletOptionsProvider _walletOptions =
         Provider.of<WalletOptionsProvider>(context);
 
-        _generateWalletProvider.showPinIfEmpty();
-
     return WillPopScope(
         onWillPop: () {
-          _generateWalletProvider.cesiumID.text = '';
-          _generateWalletProvider.cesiumPWD.text = '';
-          _generateWalletProvider.cesiumPubkey.text = '';
-          _generateWalletProvider.pin.text = '';
-          _generateWalletProvider.canImport = false;
-          _generateWalletProvider.isPinChanged = false;
-          _generateWalletProvider.isCesiumIDVisible = false;
-          _generateWalletProvider.isCesiumPWDVisible = false;
-          _generateWalletProvider.reloadBuild();
+          _generateWalletProvider.resetImportView();
           return Future<bool>.value(true);
         },
         child: Scaffold(
@@ -38,15 +28,7 @@ class ImportWalletScreen extends StatelessWidget {
                 leading: IconButton(
                     icon: Icon(Icons.arrow_back, color: Colors.black),
                     onPressed: () {
-                      _generateWalletProvider.cesiumID.text = '';
-                      _generateWalletProvider.cesiumPWD.text = '';
-                      _generateWalletProvider.cesiumPubkey.text = '';
-                      _generateWalletProvider.pin.text = '';
-                      _generateWalletProvider.canImport = false;
-                      _generateWalletProvider.isPinChanged = false;
-                      _generateWalletProvider.isCesiumIDVisible = false;
-                      _generateWalletProvider.isCesiumPWDVisible = false;
-                      _generateWalletProvider.reloadBuild();
+                      _generateWalletProvider.resetImportView();
                       Navigator.of(context).pop();
                     }),
                 title: SizedBox(
@@ -195,6 +177,7 @@ class ImportWalletScreen extends StatelessWidget {
                                                 .cesiumPWD.text)
                                         .then((value) {
                                       _myWalletProvider.rebuildWidget();
+                                      _generateWalletProvider.resetImportView();
                                     });
                                   }
                                 : null,
diff --git a/lib/screens/myWallets/walletsHome.dart b/lib/screens/myWallets/walletsHome.dart
index e66b0d38..9ea2c064 100644
--- a/lib/screens/myWallets/walletsHome.dart
+++ b/lib/screens/myWallets/walletsHome.dart
@@ -9,6 +9,7 @@ import 'package:provider/provider.dart';
 // ignore: must_be_immutable
 class WalletsHome extends StatelessWidget {
   final _derivationKey = GlobalKey<FormState>();
+  int firstWalletDerivation;
 
   @override
   Widget build(BuildContext context) {
@@ -20,9 +21,14 @@ class WalletsHome extends StatelessWidget {
     myWalletProvider.listWallets = myWalletProvider.getAllWalletsNames();
     final bool isWalletsExists = myWalletProvider.checkIfWalletExist();
 
+    if (myWalletProvider.listWallets != '') {
+      firstWalletDerivation =
+          int.parse(myWalletProvider.listWallets.split('\n')[0].split(':')[2]);
+    }
+
     return Scaffold(
         floatingActionButton: Visibility(
-            visible: (isWalletsExists),
+            visible: (isWalletsExists && firstWalletDerivation != -1),
             child: Container(
                 height: 80.0,
                 width: 80.0,
diff --git a/pubspec.lock b/pubspec.lock
index efabd63f..9a59dae6 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -36,6 +36,13 @@ packages:
       url: "https://pub.dartlang.org"
     source: hosted
     version: "2.1.0-nullsafety.1"
+  catcher:
+    dependency: "direct main"
+    description:
+      name: catcher
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "0.4.1"
   characters:
     dependency: transitive
     description:
@@ -106,6 +113,27 @@ packages:
       url: "https://pub.dartlang.org"
     source: hosted
     version: "2.1.5"
+  device_info:
+    dependency: transitive
+    description:
+      name: device_info
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "1.0.0"
+  device_info_platform_interface:
+    dependency: transitive
+    description:
+      name: device_info_platform_interface
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "1.0.1"
+  dio:
+    dependency: transitive
+    description:
+      name: dio
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "3.0.10"
   dubp:
     dependency: "direct main"
     description:
@@ -160,6 +188,20 @@ packages:
       url: "https://pub.dartlang.org"
     source: hosted
     version: "0.8.1"
+  flutter_logs:
+    dependency: "direct main"
+    description:
+      name: flutter_logs
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "2.1.3"
+  flutter_mailer:
+    dependency: transitive
+    description:
+      name: flutter_mailer
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "1.0.1"
   flutter_plugin_android_lifecycle:
     dependency: transitive
     description:
@@ -177,6 +219,13 @@ packages:
     description: flutter
     source: sdk
     version: "0.0.0"
+  fluttertoast:
+    dependency: transitive
+    description:
+      name: fluttertoast
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "7.1.6"
   globbing:
     dependency: transitive
     description:
@@ -317,6 +366,27 @@ packages:
       url: "https://pub.dartlang.org"
     source: hosted
     version: "0.6.2"
+  logger:
+    dependency: "direct main"
+    description:
+      name: logger
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "0.9.4"
+  logging:
+    dependency: transitive
+    description:
+      name: logging
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "0.11.4"
+  mailer:
+    dependency: transitive
+    description:
+      name: mailer
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "3.3.0"
   matcher:
     dependency: transitive
     description:
@@ -331,6 +401,13 @@ packages:
       url: "https://pub.dartlang.org"
     source: hosted
     version: "1.3.0-nullsafety.3"
+  mime:
+    dependency: transitive
+    description:
+      name: mime
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "0.9.7"
   nested:
     dependency: transitive
     description:
@@ -500,19 +577,19 @@ packages:
     source: hosted
     version: "0.24.1"
   sentry:
-    dependency: transitive
+    dependency: "direct main"
     description:
       name: sentry
       url: "https://pub.dartlang.org"
     source: hosted
-    version: "4.0.1"
+    version: "4.0.4"
   sentry_flutter:
     dependency: "direct main"
     description:
       name: sentry_flutter
       url: "https://pub.dartlang.org"
     source: hosted
-    version: "4.0.1"
+    version: "4.0.4"
   shared_preferences:
     dependency: "direct main"
     description:
diff --git a/pubspec.yaml b/pubspec.yaml
index 74b7c4c4..f38a6319 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -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+6
+version: 0.0.1+8
 
 environment:
   sdk: ">=2.7.0 <3.0.0"
@@ -23,7 +23,6 @@ dependencies:
   graphql_flutter: ^4.0.0 #^3.1.0
   provider: ^4.3.2+3
   truncate: ^2.1.2
-  sentry_flutter: ^4.0.1
   path_provider: ^1.6.24
   pin_code_fields: ^6.0.2
   http: ^0.12.2
@@ -34,7 +33,11 @@ dependencies:
   sync_http: ^0.2.0
   crypto: ^2.1.5
   fast_base58:
-
+  logger: ^0.9.4
+  flutter_logs: ^2.1.3
+  sentry: ^4.0.4
+  sentry_flutter: ^4.0.4
+  catcher: ^0.4.1
 
 flutter_icons:
   android: "ic_launcher"
@@ -57,3 +60,4 @@ flutter:
     - assets/
     - assets/OpenSans-Regular.ttf
     - assets/icon_user.png
+    - assets/qrcode-scan.png
-- 
GitLab