From 4373e95cbfe6f0db07b0567a57be5eb225e92f0d Mon Sep 17 00:00:00 2001
From: poka <poka@p2p.legal>
Date: Thu, 18 Feb 2021 07:54:35 +0100
Subject: [PATCH] Catch DubpRust.setup errors on startup; Change Home tab to
 Explorer tab with icon

---
 assets/blockchain.png    | Bin 0 -> 9554 bytes
 lib/main.dart            | 113 +++++++++++++++++++--------------------
 lib/models/history.dart  |  11 ++--
 lib/screens/history.dart |   4 +-
 lib/screens/home.dart    |  15 ++++--
 pubspec.yaml             |   3 +-
 scripts/build-apk.sh     |   3 +-
 7 files changed, 80 insertions(+), 69 deletions(-)
 create mode 100755 assets/blockchain.png

diff --git a/assets/blockchain.png b/assets/blockchain.png
new file mode 100755
index 0000000000000000000000000000000000000000..8b9eb70a2586801ef228756097dc16bea1387d0f
GIT binary patch
literal 9554
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
z%0A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
E0Eh9;Gynhq

literal 0
HcmV?d00001

diff --git a/lib/main.dart b/lib/main.dart
index eabf207b..7efdea86 100644
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -24,69 +24,58 @@ import 'package:catcher/catcher.dart';
 final bool enableSentry = true;
 
 Future<void> main() async {
-  try {
-    WidgetsFlutterBinding.ensureInitialized();
+  WidgetsFlutterBinding.ensureInitialized();
 
-    // var downloadsDirectory = DownloadsPathProvider.downloadsDirectory;
-    // File logFile = File(downloadsDirectory.toString() + '/gecko.log');
+  // var downloadsDirectory = DownloadsPathProvider.downloadsDirectory;
+  // File logFile = File(downloadsDirectory.toString() + '/gecko.log');
 
-    // 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());
+  // 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');
+  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');
 
-    // Get a valid GVA endpoint
-    endPointGVA = await _homeProvider.getValidEndpoint();
+  // 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);
+  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');
+    // 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,
-      );
-    }
+    runApp(Gecko(endPointGVA, _store));
   }
 }
 
@@ -107,7 +96,17 @@ class Gecko extends StatelessWidget {
         link: _httpLink,
       ),
     );
-    DubpRust.setup();
+    try {
+      DubpRust.setup();
+    } catch (e, stack) {
+      print(e);
+      if (kReleaseMode) {
+        Sentry.captureException(
+          e,
+          stackTrace: stack,
+        );
+      }
+    }
 
     return MultiProvider(
         providers: [
diff --git a/lib/models/history.dart b/lib/models/history.dart
index 0b6f6fb6..966d14ca 100644
--- a/lib/models/history.dart
+++ b/lib/models/history.dart
@@ -1,8 +1,10 @@
 import 'package:flutter/foundation.dart';
 import 'package:flutter/material.dart';
 import 'package:gecko/globals.dart';
+import 'package:gecko/models/home.dart';
 import 'package:graphql_flutter/graphql_flutter.dart';
 import 'package:permission_handler/permission_handler.dart';
+import 'package:provider/provider.dart';
 import 'package:qrscan/qrscan.dart' as scanner;
 import 'dart:math';
 import 'package:intl/intl.dart';
@@ -22,7 +24,7 @@ class HistoryProvider with ChangeNotifier {
   bool isHistoryScreen = false;
   String historySwitchButtun = "Voir l'historique";
 
-  Future scan() async {
+  Future scan(context) async {
     await Permission.camera.request();
     String barcode;
     try {
@@ -33,14 +35,16 @@ class HistoryProvider with ChangeNotifier {
     }
     if (barcode != null) {
       this.outputPubkey.text = barcode;
-      isPubkey(barcode);
+      isPubkey(context, barcode);
     } else {
       return 'false';
     }
     return barcode;
   }
 
-  String isPubkey(pubkey) {
+  String isPubkey(context, pubkey) {
+    HomeProvider _homeProvider =
+        Provider.of<HomeProvider>(context, listen: false);
     final RegExp regExp = new RegExp(
       r'^[a-zA-Z0-9]+$',
       caseSensitive: false,
@@ -59,6 +63,7 @@ class HistoryProvider with ChangeNotifier {
 
       isHistoryScreen = false;
       historySwitchButtun = "Voir l'historique";
+      _homeProvider.handleSearchEnd();
       notifyListeners();
 
       return pubkey;
diff --git a/lib/screens/history.dart b/lib/screens/history.dart
index a46980c0..8a41aa52 100644
--- a/lib/screens/history.dart
+++ b/lib/screens/history.dart
@@ -43,7 +43,7 @@ class HistoryScreen extends StatelessWidget with ChangeNotifier {
             child: FloatingActionButton(
               heroTag: "buttonScan",
               onPressed: () async {
-                await _historyProvider.scan();
+                await _historyProvider.scan(context);
               },
               child: Container(
                   height: 40.0,
@@ -346,7 +346,7 @@ class HistoryScreen extends StatelessWidget with ChangeNotifier {
                       isThreeLine: false,
                       onTap: () {
                         // this._outputPubkey.text = repository[2];
-                        _historyProvider.isPubkey(repository[2]);
+                        _historyProvider.isPubkey(context, repository[2]);
                       })),
             if (result.isLoading)
               Row(
diff --git a/lib/screens/home.dart b/lib/screens/home.dart
index 31324437..84bb6ec6 100644
--- a/lib/screens/home.dart
+++ b/lib/screens/home.dart
@@ -88,7 +88,7 @@ class HomeScreen extends StatelessWidget {
                         onChanged: (text) {
                           print("Clé tappé: $text");
                           final String searchResult =
-                              _historyProvider.isPubkey(text);
+                              _historyProvider.isPubkey(context, text);
                           if (searchResult != '') {
                             _homeProvider.currentIndex = 0;
                           }
@@ -123,13 +123,18 @@ class HomeScreen extends StatelessWidget {
         currentIndex: _homeProvider.currentIndex,
         items: [
           BottomNavigationBarItem(
-            icon: new Icon(Icons.format_list_bulleted),
-            label: 'Accueil',
+            icon: Padding(
+                padding: EdgeInsets.symmetric(horizontal: 86),
+                child: Image.asset('assets/blockchain.png')),
+            activeIcon: Padding(
+                padding: EdgeInsets.symmetric(horizontal: 86),
+                child: Image.asset('assets/blockchain.png')),
+            label: 'Explorateur',
           ),
           BottomNavigationBarItem(
-            icon: new Icon(Icons.lock),
+            icon: Icon(Icons.lock),
             label: 'Mes portefeuilles',
-          )
+          ),
         ],
       ),
     );
diff --git a/pubspec.yaml b/pubspec.yaml
index f38a6319..87d2ae8c 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+8
+version: 0.0.1+10
 
 environment:
   sdk: ">=2.7.0 <3.0.0"
@@ -61,3 +61,4 @@ flutter:
     - assets/OpenSans-Regular.ttf
     - assets/icon_user.png
     - assets/qrcode-scan.png
+    - assets/blockchain.png
diff --git a/scripts/build-apk.sh b/scripts/build-apk.sh
index 9d20b45e..86a0ac3b 100755
--- a/scripts/build-apk.sh
+++ b/scripts/build-apk.sh
@@ -10,7 +10,7 @@ ori_app="app.apk"
 
 echo "Nom du build final: ${APPNAME}-${VERSION}+${BUILD}.apk"
 
-## To compile Rust binding
+## To build Rust dependancies
 # cargo br
 
 echo "To compile Rust binding, exec: cargo br"
@@ -20,6 +20,7 @@ if [[ $1 == "bundle" ]]; then
 	flutter build appbundle --release --target-platform android-arm,android-arm64 --build-name $VERSION --build-number $BUILD
 else
 #	flutter build apk --release --split-per-abi --target-platform android-arm,android-arm64 --build-name $VERSION --build-number $BUILD
+#	flutter build apk --release --split-per-abi --build-name $VERSION --build-number $BUILD
 	flutter build apk --release --build-name $VERSION --build-number $BUILD
 fi
 
-- 
GitLab