From 4027619ad3e9276dc3343562c3ff7deb16854724 Mon Sep 17 00:00:00 2001 From: Omar Hatem Date: Fri, 17 Mar 2023 21:15:28 +0200 Subject: [PATCH] V4.6.0 reports fixes (#835) * Add user network connection issue to ignored errors * Check current nodes on each app start * Add user network connection error to ignored errors * Fix sharing files issue on iOS --- cw_core/pubspec.lock | 2 +- cw_haven/pubspec.lock | 12 +-- cw_monero/pubspec.lock | 12 +-- ios/Podfile.lock | 90 ++++++++++++-------- lib/entities/default_settings_migration.dart | 3 + lib/reactions/bootstrap.dart | 2 +- lib/utils/exception_handler.dart | 15 +++- lib/utils/share_util.dart | 5 +- 8 files changed, 86 insertions(+), 55 deletions(-) diff --git a/cw_core/pubspec.lock b/cw_core/pubspec.lock index 06997e8f1..01e19dda4 100644 --- a/cw_core/pubspec.lock +++ b/cw_core/pubspec.lock @@ -202,7 +202,7 @@ packages: source: hosted version: "2.0.1" file: - dependency: transitive + dependency: "direct main" description: name: file sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d" diff --git a/cw_haven/pubspec.lock b/cw_haven/pubspec.lock index 84a4fe16a..a79d2d3cf 100644 --- a/cw_haven/pubspec.lock +++ b/cw_haven/pubspec.lock @@ -204,10 +204,10 @@ packages: dependency: "direct main" description: name: ffi - sha256: "13a6ccf6a459a125b3fcdb6ec73bd5ff90822e071207c663bfd1f70062d51d18" + sha256: a38574032c5f1dd06c4aee541789906c12ccaab8ba01446e800d9c5b79c4a978 url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "2.0.1" file: dependency: transitive description: @@ -454,10 +454,10 @@ packages: dependency: transitive description: name: path_provider_windows - sha256: a34ecd7fb548f8e57321fd8e50d865d266941b54e6c3b7758cf8f37c24116905 + sha256: f53720498d5a543f9607db4b0e997c4b5438884de25b0f73098cc2671a51b130 url: "https://pub.dev" source: hosted - version: "2.0.7" + version: "2.1.5" platform: dependency: transitive description: @@ -651,10 +651,10 @@ packages: dependency: transitive description: name: win32 - sha256: c0e3a4f7be7dae51d8f152230b86627e3397c1ba8c3fa58e63d44a9f3edc9cef + sha256: c9ebe7ee4ab0c2194e65d3a07d8c54c5d00bb001b76081c4a04cdb8448b59e46 url: "https://pub.dev" source: hosted - version: "2.6.1" + version: "3.1.3" xdg_directories: dependency: transitive description: diff --git a/cw_monero/pubspec.lock b/cw_monero/pubspec.lock index d75ee0928..437184a7d 100644 --- a/cw_monero/pubspec.lock +++ b/cw_monero/pubspec.lock @@ -204,10 +204,10 @@ packages: dependency: "direct main" description: name: ffi - sha256: "13a6ccf6a459a125b3fcdb6ec73bd5ff90822e071207c663bfd1f70062d51d18" + sha256: a38574032c5f1dd06c4aee541789906c12ccaab8ba01446e800d9c5b79c4a978 url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "2.0.1" file: dependency: transitive description: @@ -454,10 +454,10 @@ packages: dependency: transitive description: name: path_provider_windows - sha256: a34ecd7fb548f8e57321fd8e50d865d266941b54e6c3b7758cf8f37c24116905 + sha256: f53720498d5a543f9607db4b0e997c4b5438884de25b0f73098cc2671a51b130 url: "https://pub.dev" source: hosted - version: "2.0.7" + version: "2.1.5" platform: dependency: transitive description: @@ -651,10 +651,10 @@ packages: dependency: transitive description: name: win32 - sha256: c0e3a4f7be7dae51d8f152230b86627e3397c1ba8c3fa58e63d44a9f3edc9cef + sha256: c9ebe7ee4ab0c2194e65d3a07d8c54c5d00bb001b76081c4a04cdb8448b59e46 url: "https://pub.dev" source: hosted - version: "2.6.1" + version: "3.1.3" xdg_directories: dependency: transitive description: diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 3a810430d..658d55509 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -7,7 +7,7 @@ PODS: - connectivity (0.0.1): - Flutter - Reachability - - CryptoSwift (1.3.2) + - CryptoSwift (1.6.0) - cw_haven (0.0.1): - cw_haven/Boost (= 0.0.1) - cw_haven/Haven (= 0.0.1) @@ -65,16 +65,18 @@ PODS: - Flutter - device_info (0.0.1): - Flutter + - device_info_plus (0.0.1): + - Flutter - devicelocale (0.0.1): - Flutter - - DKImagePickerController/Core (4.3.2): + - DKImagePickerController/Core (4.3.4): - DKImagePickerController/ImageDataManager - DKImagePickerController/Resource - - DKImagePickerController/ImageDataManager (4.3.2) - - DKImagePickerController/PhotoGallery (4.3.2): + - DKImagePickerController/ImageDataManager (4.3.4) + - DKImagePickerController/PhotoGallery (4.3.4): - DKImagePickerController/Core - DKPhotoGallery - - DKImagePickerController/Resource (4.3.2) + - DKImagePickerController/Resource (4.3.4) - DKPhotoGallery (0.0.17): - DKPhotoGallery/Core (= 0.0.17) - DKPhotoGallery/Model (= 0.0.17) @@ -102,29 +104,41 @@ PODS: - DKImagePickerController/PhotoGallery - Flutter - Flutter (1.0.0) + - flutter_inappwebview (0.0.1): + - Flutter + - flutter_inappwebview/Core (= 0.0.1) + - OrderedSet (~> 5.0) + - flutter_inappwebview/Core (0.0.1): + - Flutter + - OrderedSet (~> 5.0) + - flutter_mailer (0.0.1): + - Flutter - flutter_secure_storage (3.3.1): - Flutter - local_auth_ios (0.0.1): - Flutter - MTBBarcodeScanner (5.0.11) + - OrderedSet (5.0.0) - package_info (0.0.1): - Flutter - - path_provider_ios (0.0.1): + - path_provider_foundation (0.0.1): - Flutter + - FlutterMacOS - permission_handler_apple (9.0.4): - Flutter - platform_device_id (0.0.1): - Flutter - Reachability (3.2) - - SDWebImage (5.9.1): - - SDWebImage/Core (= 5.9.1) - - SDWebImage/Core (5.9.1) + - SDWebImage (5.15.5): + - SDWebImage/Core (= 5.15.5) + - SDWebImage/Core (5.15.5) - share_plus (0.0.1): - Flutter - - shared_preferences_ios (0.0.1): + - shared_preferences_foundation (0.0.1): - Flutter - - SwiftProtobuf (1.18.0) - - SwiftyGif (5.3.0) + - FlutterMacOS + - SwiftProtobuf (1.21.0) + - SwiftyGif (5.4.4) - uni_links (0.0.1): - Flutter - UnstoppableDomainsResolution (4.0.0): @@ -132,8 +146,6 @@ PODS: - CryptoSwift - url_launcher_ios (0.0.1): - Flutter - - webview_flutter_wkwebview (0.0.1): - - Flutter DEPENDENCIES: - barcode_scan2 (from `.symlinks/plugins/barcode_scan2/ios`) @@ -144,21 +156,23 @@ DEPENDENCIES: - cw_shared_external (from `.symlinks/plugins/cw_shared_external/ios`) - device_display_brightness (from `.symlinks/plugins/device_display_brightness/ios`) - device_info (from `.symlinks/plugins/device_info/ios`) + - device_info_plus (from `.symlinks/plugins/device_info_plus/ios`) - devicelocale (from `.symlinks/plugins/devicelocale/ios`) - file_picker (from `.symlinks/plugins/file_picker/ios`) - Flutter (from `Flutter`) + - flutter_inappwebview (from `.symlinks/plugins/flutter_inappwebview/ios`) + - flutter_mailer (from `.symlinks/plugins/flutter_mailer/ios`) - flutter_secure_storage (from `.symlinks/plugins/flutter_secure_storage/ios`) - local_auth_ios (from `.symlinks/plugins/local_auth_ios/ios`) - package_info (from `.symlinks/plugins/package_info/ios`) - - path_provider_ios (from `.symlinks/plugins/path_provider_ios/ios`) + - path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/ios`) - permission_handler_apple (from `.symlinks/plugins/permission_handler_apple/ios`) - platform_device_id (from `.symlinks/plugins/platform_device_id/ios`) - share_plus (from `.symlinks/plugins/share_plus/ios`) - - shared_preferences_ios (from `.symlinks/plugins/shared_preferences_ios/ios`) + - shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/ios`) - uni_links (from `.symlinks/plugins/uni_links/ios`) - UnstoppableDomainsResolution (~> 4.0.0) - url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`) - - webview_flutter_wkwebview (from `.symlinks/plugins/webview_flutter_wkwebview/ios`) SPEC REPOS: https://github.com/CocoaPods/Specs.git: @@ -167,6 +181,7 @@ SPEC REPOS: - DKImagePickerController - DKPhotoGallery - MTBBarcodeScanner + - OrderedSet - Reachability - SDWebImage - SwiftProtobuf @@ -188,67 +203,74 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/device_display_brightness/ios" device_info: :path: ".symlinks/plugins/device_info/ios" + device_info_plus: + :path: ".symlinks/plugins/device_info_plus/ios" devicelocale: :path: ".symlinks/plugins/devicelocale/ios" file_picker: :path: ".symlinks/plugins/file_picker/ios" Flutter: :path: Flutter + flutter_inappwebview: + :path: ".symlinks/plugins/flutter_inappwebview/ios" + flutter_mailer: + :path: ".symlinks/plugins/flutter_mailer/ios" flutter_secure_storage: :path: ".symlinks/plugins/flutter_secure_storage/ios" local_auth_ios: :path: ".symlinks/plugins/local_auth_ios/ios" package_info: :path: ".symlinks/plugins/package_info/ios" - path_provider_ios: - :path: ".symlinks/plugins/path_provider_ios/ios" + path_provider_foundation: + :path: ".symlinks/plugins/path_provider_foundation/ios" permission_handler_apple: :path: ".symlinks/plugins/permission_handler_apple/ios" platform_device_id: :path: ".symlinks/plugins/platform_device_id/ios" share_plus: :path: ".symlinks/plugins/share_plus/ios" - shared_preferences_ios: - :path: ".symlinks/plugins/shared_preferences_ios/ios" + shared_preferences_foundation: + :path: ".symlinks/plugins/shared_preferences_foundation/ios" uni_links: :path: ".symlinks/plugins/uni_links/ios" url_launcher_ios: :path: ".symlinks/plugins/url_launcher_ios/ios" - webview_flutter_wkwebview: - :path: ".symlinks/plugins/webview_flutter_wkwebview/ios" SPEC CHECKSUMS: barcode_scan2: 0af2bb63c81b4565aab6cd78278e4c0fa136dbb0 BigInt: f668a80089607f521586bbe29513d708491ef2f7 connectivity: c4130b2985d4ef6fd26f9702e886bd5260681467 - CryptoSwift: 093499be1a94b0cae36e6c26b70870668cb56060 + CryptoSwift: 562f8eceb40e80796fffc668b0cad9313284cfa6 cw_haven: b3e54e1fbe7b8e6fda57a93206bc38f8e89b898a cw_monero: 4cf3b96f2da8e95e2ef7d6703dd4d2c509127b7d cw_shared_external: 2972d872b8917603478117c9957dfca611845a92 device_display_brightness: 1510e72c567a1f6ce6ffe393dcd9afd1426034f7 device_info: d7d233b645a32c40dfdc212de5cf646ca482f175 + device_info_plus: e5c5da33f982a436e103237c0c85f9031142abed devicelocale: b22617f40038496deffba44747101255cee005b0 - DKImagePickerController: b5eb7f7a388e4643264105d648d01f727110fc3d + DKImagePickerController: b512c28220a2b8ac7419f21c491fc8534b7601ac DKPhotoGallery: fdfad5125a9fdda9cc57df834d49df790dbb4179 - file_picker: 817ab1d8cd2da9d2da412a417162deee3500fc95 + file_picker: ce3938a0df3cc1ef404671531facef740d03f920 Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854 + flutter_inappwebview: bfd58618f49dc62f2676de690fc6dcda1d6c3721 + flutter_mailer: 2ef5a67087bc8c6c4cefd04a178bf1ae2c94cd83 flutter_secure_storage: 7953c38a04c3fdbb00571bcd87d8e3b5ceb9daec - local_auth_ios: 0d333dde7780f669e66f19d2ff6005f3ea84008d + local_auth_ios: c6cf091ded637a88f24f86a8875d8b0f526e2605 MTBBarcodeScanner: f453b33c4b7dfe545d8c6484ed744d55671788cb + OrderedSet: aaeb196f7fef5a9edf55d89760da9176ad40b93c package_info: 873975fc26034f0b863a300ad47e7f1ac6c7ec62 - path_provider_ios: 14f3d2fd28c4fdb42f44e0f751d12861c43cee02 + path_provider_foundation: c68054786f1b4f3343858c1e1d0caaded73f0be9 permission_handler_apple: 44366e37eaf29454a1e7b1b7d736c2cceaeb17ce platform_device_id: 81b3e2993881f87d0c82ef151dc274df4869aef5 Reachability: 33e18b67625424e47b6cde6d202dce689ad7af96 - SDWebImage: a990c053fff71e388a10f3357edb0be17929c9c5 + SDWebImage: fd7e1a22f00303e058058278639bf6196ee431fe share_plus: 056a1e8ac890df3e33cb503afffaf1e9b4fbae68 - shared_preferences_ios: 548a61f8053b9b8a49ac19c1ffbc8b92c50d68ad - SwiftProtobuf: c3c12645230d9b09c72267e0de89468c5543bd86 - SwiftyGif: e466e86c660d343357ab944a819a101c4127cb40 + shared_preferences_foundation: 986fc17f3d3251412d18b0265f9c64113a8c2472 + SwiftProtobuf: afced68785854575756db965e9da52bbf3dc45e7 + SwiftyGif: 93a1cc87bf3a51916001cf8f3d63835fb64c819f uni_links: d97da20c7701486ba192624d99bffaaffcfc298a UnstoppableDomainsResolution: c3c67f4d0a5e2437cb00d4bd50c2e00d6e743841 - url_launcher_ios: 839c58cdb4279282219f5e248c3321761ff3c4de - webview_flutter_wkwebview: b7e70ef1ddded7e69c796c7390ee74180182971f + url_launcher_ios: 08a3dfac5fb39e8759aeb0abbd5d9480f30fc8b4 PODFILE CHECKSUM: ae71bdf0eb731a1ffc399c122f6aa4dea0cb5f6f diff --git a/lib/entities/default_settings_migration.dart b/lib/entities/default_settings_migration.dart index 94fc7ede8..a1a35125b 100644 --- a/lib/entities/default_settings_migration.dart +++ b/lib/entities/default_settings_migration.dart @@ -39,6 +39,9 @@ Future defaultSettingsMigration( await ios_migrate_v1(walletInfoSource, tradeSource, contactSource); } + // check current nodes for nullability regardless of the version + await checkCurrentNodes(nodes, sharedPreferences); + final currentVersion = sharedPreferences .getInt(PreferencesKey.currentDefaultSettingsMigrationVersion) ?? 0; diff --git a/lib/reactions/bootstrap.dart b/lib/reactions/bootstrap.dart index 6451c92c5..e78d8a01d 100644 --- a/lib/reactions/bootstrap.dart +++ b/lib/reactions/bootstrap.dart @@ -25,7 +25,7 @@ Future bootstrap(GlobalKey navigatorKey) async { .get() .getString(PreferencesKey.currentWalletName); if (currentWalletName != null) { - authenticationStore.state = AuthenticationState.installed; + authenticationStore.installed(); } startAuthenticationStateChange(authenticationStore, navigatorKey); diff --git a/lib/utils/exception_handler.dart b/lib/utils/exception_handler.dart index 51a525394..cd563dc1a 100644 --- a/lib/utils/exception_handler.dart +++ b/lib/utils/exception_handler.dart @@ -17,13 +17,14 @@ class ExceptionHandler { static bool _hasError = false; static const _coolDownDurationInDays = 7; - static void _saveException(String? error, StackTrace? stackTrace) async { + static void _saveException(String? error, StackTrace? stackTrace, {String? library}) async { final appDocDir = await getApplicationDocumentsDirectory(); final file = File('${appDocDir.path}/error.txt'); final exception = { "${DateTime.now()}": { - "Error": error, + "Error": "$error\n\n", + "Library": "$library\n\n", "StackTrace": stackTrace.toString(), } }; @@ -31,7 +32,7 @@ class ExceptionHandler { const String separator = '''\n\n========================================================== ==========================================================\n\n'''; - await file.writeAsString( + file.writeAsStringSync( "$exception $separator", mode: FileMode.append, ); @@ -75,7 +76,11 @@ class ExceptionHandler { return; } - _saveException(errorDetails.exception.toString(), errorDetails.stack); + _saveException( + errorDetails.exceptionAsString(), + errorDetails.stack, + library: errorDetails.library, + ); final sharedPrefs = await SharedPreferences.getInstance(); @@ -134,6 +139,8 @@ class ExceptionHandler { "errno = 103", // SocketException: Software caused connection abort "errno = 104", // SocketException: Connection reset by peer "errno = 110", // SocketException: Connection timed out + "HttpException: Connection closed before full header was received", + "HandshakeException: Connection terminated during handshake", "PERMISSION_NOT_GRANTED", ]; diff --git a/lib/utils/share_util.dart b/lib/utils/share_util.dart index 518590fdd..701fcea1d 100644 --- a/lib/utils/share_util.dart +++ b/lib/utils/share_util.dart @@ -3,8 +3,6 @@ import 'package:share_plus/share_plus.dart'; import 'package:cross_file/cross_file.dart'; class ShareUtil { - static const _mimeType = 'application/*'; - static void share({required String text, required BuildContext context}) { Share.share( text, @@ -17,7 +15,8 @@ class ShareUtil { required String fileName, required BuildContext context, }) async { - Share.shareXFiles( + const _mimeType = 'application/*'; + await Share.shareXFiles( [ XFile( filePath,