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

Omar Hatem committed Mar 17, 2023 at 21:15 UTC 4027619ad3e9276dc3343562c3ff7deb16854724
8 files changed +86 -55
cw_core/pubspec.lock
+1 -1
@@ -202,7 +202,7 @@ packages:
202 source: hosted
203 version: "2.0.1"
204 file:
205 - dependency: transitive
205 + dependency: "direct main"
206 description:
207 name: file
208 sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d"
cw_haven/pubspec.lock
+6 -6
@@ -204,10 +204,10 @@ packages:
204 dependency: "direct main"
205 description:
206 name: ffi
207 - sha256: "13a6ccf6a459a125b3fcdb6ec73bd5ff90822e071207c663bfd1f70062d51d18"
207 + sha256: a38574032c5f1dd06c4aee541789906c12ccaab8ba01446e800d9c5b79c4a978
208 url: "https://pub.dev"
209 source: hosted
210 - version: "1.2.1"
210 + version: "2.0.1"
211 file:
212 dependency: transitive
213 description:
@@ -454,10 +454,10 @@ packages:
454 dependency: transitive
455 description:
456 name: path_provider_windows
457 - sha256: a34ecd7fb548f8e57321fd8e50d865d266941b54e6c3b7758cf8f37c24116905
457 + sha256: f53720498d5a543f9607db4b0e997c4b5438884de25b0f73098cc2671a51b130
458 url: "https://pub.dev"
459 source: hosted
460 - version: "2.0.7"
460 + version: "2.1.5"
461 platform:
462 dependency: transitive
463 description:
@@ -651,10 +651,10 @@ packages:
651 dependency: transitive
652 description:
653 name: win32
654 - sha256: c0e3a4f7be7dae51d8f152230b86627e3397c1ba8c3fa58e63d44a9f3edc9cef
654 + sha256: c9ebe7ee4ab0c2194e65d3a07d8c54c5d00bb001b76081c4a04cdb8448b59e46
655 url: "https://pub.dev"
656 source: hosted
657 - version: "2.6.1"
657 + version: "3.1.3"
658 xdg_directories:
659 dependency: transitive
660 description:
cw_monero/pubspec.lock
+6 -6
@@ -204,10 +204,10 @@ packages:
204 dependency: "direct main"
205 description:
206 name: ffi
207 - sha256: "13a6ccf6a459a125b3fcdb6ec73bd5ff90822e071207c663bfd1f70062d51d18"
207 + sha256: a38574032c5f1dd06c4aee541789906c12ccaab8ba01446e800d9c5b79c4a978
208 url: "https://pub.dev"
209 source: hosted
210 - version: "1.2.1"
210 + version: "2.0.1"
211 file:
212 dependency: transitive
213 description:
@@ -454,10 +454,10 @@ packages:
454 dependency: transitive
455 description:
456 name: path_provider_windows
457 - sha256: a34ecd7fb548f8e57321fd8e50d865d266941b54e6c3b7758cf8f37c24116905
457 + sha256: f53720498d5a543f9607db4b0e997c4b5438884de25b0f73098cc2671a51b130
458 url: "https://pub.dev"
459 source: hosted
460 - version: "2.0.7"
460 + version: "2.1.5"
461 platform:
462 dependency: transitive
463 description:
@@ -651,10 +651,10 @@ packages:
651 dependency: transitive
652 description:
653 name: win32
654 - sha256: c0e3a4f7be7dae51d8f152230b86627e3397c1ba8c3fa58e63d44a9f3edc9cef
654 + sha256: c9ebe7ee4ab0c2194e65d3a07d8c54c5d00bb001b76081c4a04cdb8448b59e46
655 url: "https://pub.dev"
656 source: hosted
657 - version: "2.6.1"
657 + version: "3.1.3"
658 xdg_directories:
659 dependency: transitive
660 description:
ios/Podfile.lock
+56 -34
@@ -7,7 +7,7 @@ PODS:
7 - connectivity (0.0.1):
8 - Flutter
9 - Reachability
10 - - CryptoSwift (1.3.2)
10 + - CryptoSwift (1.6.0)
11 - cw_haven (0.0.1):
12 - cw_haven/Boost (= 0.0.1)
13 - cw_haven/Haven (= 0.0.1)
@@ -65,16 +65,18 @@ PODS:
65 - Flutter
66 - device_info (0.0.1):
67 - Flutter
68 + - device_info_plus (0.0.1):
69 + - Flutter
70 - devicelocale (0.0.1):
71 - Flutter
70 - - DKImagePickerController/Core (4.3.2):
72 + - DKImagePickerController/Core (4.3.4):
73 - DKImagePickerController/ImageDataManager
74 - DKImagePickerController/Resource
73 - - DKImagePickerController/ImageDataManager (4.3.2)
74 - - DKImagePickerController/PhotoGallery (4.3.2):
75 + - DKImagePickerController/ImageDataManager (4.3.4)
76 + - DKImagePickerController/PhotoGallery (4.3.4):
77 - DKImagePickerController/Core
78 - DKPhotoGallery
77 - - DKImagePickerController/Resource (4.3.2)
79 + - DKImagePickerController/Resource (4.3.4)
80 - DKPhotoGallery (0.0.17):
81 - DKPhotoGallery/Core (= 0.0.17)
82 - DKPhotoGallery/Model (= 0.0.17)
@@ -102,29 +104,41 @@ PODS:
104 - DKImagePickerController/PhotoGallery
105 - Flutter
106 - Flutter (1.0.0)
107 + - flutter_inappwebview (0.0.1):
108 + - Flutter
109 + - flutter_inappwebview/Core (= 0.0.1)
110 + - OrderedSet (~> 5.0)
111 + - flutter_inappwebview/Core (0.0.1):
112 + - Flutter
113 + - OrderedSet (~> 5.0)
114 + - flutter_mailer (0.0.1):
115 + - Flutter
116 - flutter_secure_storage (3.3.1):
117 - Flutter
118 - local_auth_ios (0.0.1):
119 - Flutter
120 - MTBBarcodeScanner (5.0.11)
121 + - OrderedSet (5.0.0)
122 - package_info (0.0.1):
123 - Flutter
112 - - path_provider_ios (0.0.1):
124 + - path_provider_foundation (0.0.1):
125 - Flutter
126 + - FlutterMacOS
127 - permission_handler_apple (9.0.4):
128 - Flutter
129 - platform_device_id (0.0.1):
130 - Flutter
131 - Reachability (3.2)
119 - - SDWebImage (5.9.1):
120 - - SDWebImage/Core (= 5.9.1)
121 - - SDWebImage/Core (5.9.1)
132 + - SDWebImage (5.15.5):
133 + - SDWebImage/Core (= 5.15.5)
134 + - SDWebImage/Core (5.15.5)
135 - share_plus (0.0.1):
136 - Flutter
124 - - shared_preferences_ios (0.0.1):
137 + - shared_preferences_foundation (0.0.1):
138 - Flutter
126 - - SwiftProtobuf (1.18.0)
127 - - SwiftyGif (5.3.0)
139 + - FlutterMacOS
140 + - SwiftProtobuf (1.21.0)
141 + - SwiftyGif (5.4.4)
142 - uni_links (0.0.1):
143 - Flutter
144 - UnstoppableDomainsResolution (4.0.0):
@@ -132,8 +146,6 @@ PODS:
146 - CryptoSwift
147 - url_launcher_ios (0.0.1):
148 - Flutter
135 - - webview_flutter_wkwebview (0.0.1):
136 - - Flutter
149
150 DEPENDENCIES:
151 - barcode_scan2 (from `.symlinks/plugins/barcode_scan2/ios`)
@@ -144,21 +156,23 @@ DEPENDENCIES:
156 - cw_shared_external (from `.symlinks/plugins/cw_shared_external/ios`)
157 - device_display_brightness (from `.symlinks/plugins/device_display_brightness/ios`)
158 - device_info (from `.symlinks/plugins/device_info/ios`)
159 + - device_info_plus (from `.symlinks/plugins/device_info_plus/ios`)
160 - devicelocale (from `.symlinks/plugins/devicelocale/ios`)
161 - file_picker (from `.symlinks/plugins/file_picker/ios`)
162 - Flutter (from `Flutter`)
163 + - flutter_inappwebview (from `.symlinks/plugins/flutter_inappwebview/ios`)
164 + - flutter_mailer (from `.symlinks/plugins/flutter_mailer/ios`)
165 - flutter_secure_storage (from `.symlinks/plugins/flutter_secure_storage/ios`)
166 - local_auth_ios (from `.symlinks/plugins/local_auth_ios/ios`)
167 - package_info (from `.symlinks/plugins/package_info/ios`)
153 - - path_provider_ios (from `.symlinks/plugins/path_provider_ios/ios`)
168 + - path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/ios`)
169 - permission_handler_apple (from `.symlinks/plugins/permission_handler_apple/ios`)
170 - platform_device_id (from `.symlinks/plugins/platform_device_id/ios`)
171 - share_plus (from `.symlinks/plugins/share_plus/ios`)
157 - - shared_preferences_ios (from `.symlinks/plugins/shared_preferences_ios/ios`)
172 + - shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/ios`)
173 - uni_links (from `.symlinks/plugins/uni_links/ios`)
174 - UnstoppableDomainsResolution (~> 4.0.0)
175 - url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`)
161 - - webview_flutter_wkwebview (from `.symlinks/plugins/webview_flutter_wkwebview/ios`)
176
177 SPEC REPOS:
178 https://github.com/CocoaPods/Specs.git:
@@ -167,6 +181,7 @@ SPEC REPOS:
181 - DKImagePickerController
182 - DKPhotoGallery
183 - MTBBarcodeScanner
184 + - OrderedSet
185 - Reachability
186 - SDWebImage
187 - SwiftProtobuf
@@ -188,67 +203,74 @@ EXTERNAL SOURCES:
203 :path: ".symlinks/plugins/device_display_brightness/ios"
204 device_info:
205 :path: ".symlinks/plugins/device_info/ios"
206 + device_info_plus:
207 + :path: ".symlinks/plugins/device_info_plus/ios"
208 devicelocale:
209 :path: ".symlinks/plugins/devicelocale/ios"
210 file_picker:
211 :path: ".symlinks/plugins/file_picker/ios"
212 Flutter:
213 :path: Flutter
214 + flutter_inappwebview:
215 + :path: ".symlinks/plugins/flutter_inappwebview/ios"
216 + flutter_mailer:
217 + :path: ".symlinks/plugins/flutter_mailer/ios"
218 flutter_secure_storage:
219 :path: ".symlinks/plugins/flutter_secure_storage/ios"
220 local_auth_ios:
221 :path: ".symlinks/plugins/local_auth_ios/ios"
222 package_info:
223 :path: ".symlinks/plugins/package_info/ios"
203 - path_provider_ios:
204 - :path: ".symlinks/plugins/path_provider_ios/ios"
224 + path_provider_foundation:
225 + :path: ".symlinks/plugins/path_provider_foundation/ios"
226 permission_handler_apple:
227 :path: ".symlinks/plugins/permission_handler_apple/ios"
228 platform_device_id:
229 :path: ".symlinks/plugins/platform_device_id/ios"
230 share_plus:
231 :path: ".symlinks/plugins/share_plus/ios"
211 - shared_preferences_ios:
212 - :path: ".symlinks/plugins/shared_preferences_ios/ios"
232 + shared_preferences_foundation:
233 + :path: ".symlinks/plugins/shared_preferences_foundation/ios"
234 uni_links:
235 :path: ".symlinks/plugins/uni_links/ios"
236 url_launcher_ios:
237 :path: ".symlinks/plugins/url_launcher_ios/ios"
217 - webview_flutter_wkwebview:
218 - :path: ".symlinks/plugins/webview_flutter_wkwebview/ios"
238
239 SPEC CHECKSUMS:
240 barcode_scan2: 0af2bb63c81b4565aab6cd78278e4c0fa136dbb0
241 BigInt: f668a80089607f521586bbe29513d708491ef2f7
242 connectivity: c4130b2985d4ef6fd26f9702e886bd5260681467
224 - CryptoSwift: 093499be1a94b0cae36e6c26b70870668cb56060
243 + CryptoSwift: 562f8eceb40e80796fffc668b0cad9313284cfa6
244 cw_haven: b3e54e1fbe7b8e6fda57a93206bc38f8e89b898a
245 cw_monero: 4cf3b96f2da8e95e2ef7d6703dd4d2c509127b7d
246 cw_shared_external: 2972d872b8917603478117c9957dfca611845a92
247 device_display_brightness: 1510e72c567a1f6ce6ffe393dcd9afd1426034f7
248 device_info: d7d233b645a32c40dfdc212de5cf646ca482f175
249 + device_info_plus: e5c5da33f982a436e103237c0c85f9031142abed
250 devicelocale: b22617f40038496deffba44747101255cee005b0
231 - DKImagePickerController: b5eb7f7a388e4643264105d648d01f727110fc3d
251 + DKImagePickerController: b512c28220a2b8ac7419f21c491fc8534b7601ac
252 DKPhotoGallery: fdfad5125a9fdda9cc57df834d49df790dbb4179
233 - file_picker: 817ab1d8cd2da9d2da412a417162deee3500fc95
253 + file_picker: ce3938a0df3cc1ef404671531facef740d03f920
254 Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854
255 + flutter_inappwebview: bfd58618f49dc62f2676de690fc6dcda1d6c3721
256 + flutter_mailer: 2ef5a67087bc8c6c4cefd04a178bf1ae2c94cd83
257 flutter_secure_storage: 7953c38a04c3fdbb00571bcd87d8e3b5ceb9daec
236 - local_auth_ios: 0d333dde7780f669e66f19d2ff6005f3ea84008d
258 + local_auth_ios: c6cf091ded637a88f24f86a8875d8b0f526e2605
259 MTBBarcodeScanner: f453b33c4b7dfe545d8c6484ed744d55671788cb
260 + OrderedSet: aaeb196f7fef5a9edf55d89760da9176ad40b93c
261 package_info: 873975fc26034f0b863a300ad47e7f1ac6c7ec62
239 - path_provider_ios: 14f3d2fd28c4fdb42f44e0f751d12861c43cee02
262 + path_provider_foundation: c68054786f1b4f3343858c1e1d0caaded73f0be9
263 permission_handler_apple: 44366e37eaf29454a1e7b1b7d736c2cceaeb17ce
264 platform_device_id: 81b3e2993881f87d0c82ef151dc274df4869aef5
265 Reachability: 33e18b67625424e47b6cde6d202dce689ad7af96
243 - SDWebImage: a990c053fff71e388a10f3357edb0be17929c9c5
266 + SDWebImage: fd7e1a22f00303e058058278639bf6196ee431fe
267 share_plus: 056a1e8ac890df3e33cb503afffaf1e9b4fbae68
245 - shared_preferences_ios: 548a61f8053b9b8a49ac19c1ffbc8b92c50d68ad
246 - SwiftProtobuf: c3c12645230d9b09c72267e0de89468c5543bd86
247 - SwiftyGif: e466e86c660d343357ab944a819a101c4127cb40
268 + shared_preferences_foundation: 986fc17f3d3251412d18b0265f9c64113a8c2472
269 + SwiftProtobuf: afced68785854575756db965e9da52bbf3dc45e7
270 + SwiftyGif: 93a1cc87bf3a51916001cf8f3d63835fb64c819f
271 uni_links: d97da20c7701486ba192624d99bffaaffcfc298a
272 UnstoppableDomainsResolution: c3c67f4d0a5e2437cb00d4bd50c2e00d6e743841
250 - url_launcher_ios: 839c58cdb4279282219f5e248c3321761ff3c4de
251 - webview_flutter_wkwebview: b7e70ef1ddded7e69c796c7390ee74180182971f
273 + url_launcher_ios: 08a3dfac5fb39e8759aeb0abbd5d9480f30fc8b4
274
275 PODFILE CHECKSUM: ae71bdf0eb731a1ffc399c122f6aa4dea0cb5f6f
276
lib/entities/default_settings_migration.dart
+3
@@ -39,6 +39,9 @@ Future defaultSettingsMigration(
39 await ios_migrate_v1(walletInfoSource, tradeSource, contactSource);
40 }
41
42 + // check current nodes for nullability regardless of the version
43 + await checkCurrentNodes(nodes, sharedPreferences);
44 +
45 final currentVersion = sharedPreferences
46 .getInt(PreferencesKey.currentDefaultSettingsMigrationVersion) ??
47 0;
lib/reactions/bootstrap.dart
+1 -1
@@ -25,7 +25,7 @@ Future<void> bootstrap(GlobalKey<NavigatorState> navigatorKey) async {
25 .get<SharedPreferences>()
26 .getString(PreferencesKey.currentWalletName);
27 if (currentWalletName != null) {
28 - authenticationStore.state = AuthenticationState.installed;
28 + authenticationStore.installed();
29 }
30
31 startAuthenticationStateChange(authenticationStore, navigatorKey);
lib/utils/exception_handler.dart
+11 -4
@@ -17,13 +17,14 @@ class ExceptionHandler {
17 static bool _hasError = false;
18 static const _coolDownDurationInDays = 7;
19
20 - static void _saveException(String? error, StackTrace? stackTrace) async {
20 + static void _saveException(String? error, StackTrace? stackTrace, {String? library}) async {
21 final appDocDir = await getApplicationDocumentsDirectory();
22
23 final file = File('${appDocDir.path}/error.txt');
24 final exception = {
25 "${DateTime.now()}": {
26 - "Error": error,
26 + "Error": "$error\n\n",
27 + "Library": "$library\n\n",
28 "StackTrace": stackTrace.toString(),
29 }
30 };
@@ -31,7 +32,7 @@ class ExceptionHandler {
32 const String separator = '''\n\n==========================================================
33 ==========================================================\n\n''';
34
34 - await file.writeAsString(
35 + file.writeAsStringSync(
36 "$exception $separator",
37 mode: FileMode.append,
38 );
@@ -75,7 +76,11 @@ class ExceptionHandler {
76 return;
77 }
78
78 - _saveException(errorDetails.exception.toString(), errorDetails.stack);
79 + _saveException(
80 + errorDetails.exceptionAsString(),
81 + errorDetails.stack,
82 + library: errorDetails.library,
83 + );
84
85 final sharedPrefs = await SharedPreferences.getInstance();
86
@@ -134,6 +139,8 @@ class ExceptionHandler {
139 "errno = 103", // SocketException: Software caused connection abort
140 "errno = 104", // SocketException: Connection reset by peer
141 "errno = 110", // SocketException: Connection timed out
142 + "HttpException: Connection closed before full header was received",
143 + "HandshakeException: Connection terminated during handshake",
144 "PERMISSION_NOT_GRANTED",
145 ];
146
lib/utils/share_util.dart
+2 -3
@@ -3,8 +3,6 @@ import 'package:share_plus/share_plus.dart';
3 import 'package:cross_file/cross_file.dart';
4
5 class ShareUtil {
6 - static const _mimeType = 'application/*';
7 -
6 static void share({required String text, required BuildContext context}) {
7 Share.share(
8 text,
@@ -17,7 +15,8 @@ class ShareUtil {
15 required String fileName,
16 required BuildContext context,
17 }) async {
20 - Share.shareXFiles(
18 + const _mimeType = 'application/*';
19 + await Share.shareXFiles(
20 <XFile>[
21 XFile(
22 filePath,