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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�&Nb_^Juj=8xX$bJeT|AOKU<|aEV~#D z6l8f+Tbu9b&b)uSHabFMq5Wz`{^GqF-FD9w@)n->x=!bnrq0J*vUd}otDRf=j!*Pc zS>iVFSo8f!PE0*tPaYOHdUrW*p&`HSG2QdxMJvunoO#S#zWIpw)lb@*-;;xSVm1XG z4Ol6#+<5A{qJ#UV6;G4=qPn!E=$75$WeFU9Q}+J8Bld4u{h6x{Q=1NPpLOwFpz>;F zndG`ZHg3(@zurFI75@2M^@3Ob*D!OQ^Nx(XVtj95O4S0p*&8IHb;1@m{adzP)`Ow? zc<%DRTdLht|NZFs+*5i)pnvk(i`V&84pb@R6d1S2Z2!{DDK}+)&ewfscE7h{;yf1| z6nOqOgJExF>2J}%)V$9#rdNKy>#M+chb@`gBds!1(_>lOr>Xbjy!QTnr#ZpX#dcjk z%QOpT+uRH5WRKVOReir3tsuEbZqr7;z(|`sl}i1Uk4~2CEtl|UNVNOLRBYE3De<4p zHKpwBG2u+NedisR)+BXRU5lF)IrUtSWGMI4Z7zF%zcZf@pnY=r(vTAe*DGE<`BrtM z!nd3&s~PT;Dm+~@ub|!~ws-lR?nO_`H~wl{+ss@p@6oW>=Sp(U>6a;?|Kd8!e&@;u zDy{x2&ZH^)wI*cq=~W>MwBO&7^bh*@!(PavbA|fuHC`)g)8F@n-{NR8Xy{kG9`?mY zD){u#DGmocR!kK*A;0r`{f464-ku-67RO_s-^icu@Z)9rCS&X3jOfSL^0sfOJJY04 zC_nonzsdW`9j3qL7kvKVajHq=XU?}C)*FX;<BrdhG7OYasW6(cVe`%S25Z|dOFd4! zE4NEoWjEiFBha92Wyp!^_J`Z0ELZ9o`0=`FOKi%1#W{1;kA)n0a{AJj_IT`^!6qTS 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