From 8dc9539a3a8a6f468e6b3fd57bbe93edd504c549 Mon Sep 17 00:00:00 2001 From: Juan Gilsanz Polo Date: Fri, 24 Nov 2023 20:44:56 +0100 Subject: [PATCH] Bug fixes --- lib/models/encryption.dart | 19 ++++++--- lib/screens/filters/filters_list.dart | 2 +- .../settings/encryption/encryption.dart | 42 ++++++++++++------- lib/services/api_client.dart | 15 +++++-- 4 files changed, 52 insertions(+), 26 deletions(-) diff --git a/lib/models/encryption.dart b/lib/models/encryption.dart index 8a384c8..1315868 100644 --- a/lib/models/encryption.dart +++ b/lib/models/encryption.dart @@ -124,12 +124,19 @@ class EncryptionData { } +class EncryptionValidationResult { + final bool isObject; + final EncryptionValidation? encryptionValidation; + final String? message; -EncyptionValidation encyptionValidationFromJson(String str) => EncyptionValidation.fromJson(json.decode(str)); + const EncryptionValidationResult({ + required this.isObject, + this.encryptionValidation, + this.message + }); +} -String encyptionValidationToJson(EncyptionValidation data) => json.encode(data.toJson()); - -class EncyptionValidation { +class EncryptionValidation { final String? subject; final String? issuer; final String? keyType; @@ -156,7 +163,7 @@ class EncyptionValidation { final String? privateKeyPath; final bool? privateKeySaved; - EncyptionValidation({ + EncryptionValidation({ this.subject, this.issuer, this.keyType, @@ -184,7 +191,7 @@ class EncyptionValidation { this.privateKeySaved, }); - factory EncyptionValidation.fromJson(Map json) => EncyptionValidation( + factory EncryptionValidation.fromJson(Map json) => EncryptionValidation( subject: json["subject"], issuer: json["issuer"], keyType: json["key_type"], diff --git a/lib/screens/filters/filters_list.dart b/lib/screens/filters/filters_list.dart index 5c93fb0..f4cca03 100644 --- a/lib/screens/filters/filters_list.dart +++ b/lib/screens/filters/filters_list.dart @@ -172,7 +172,7 @@ class _FiltersListState extends State { loadStatus: widget.loadStatus, onRefresh: () async { final result = await filteringProvider.fetchFilters(); - if (result == false) { + if (result == false && mounted) { showSnacbkar( appConfigProvider: appConfigProvider, label: AppLocalizations.of(context)!.errorLoadFilters, diff --git a/lib/screens/settings/encryption/encryption.dart b/lib/screens/settings/encryption/encryption.dart index a618dbe..f47a63d 100644 --- a/lib/screens/settings/encryption/encryption.dart +++ b/lib/screens/settings/encryption/encryption.dart @@ -72,7 +72,8 @@ class _EncryptionSettingsState extends State { String? validDataError; int certKeyValidApi = 0; - EncyptionValidation? certKeyValid; + EncryptionValidation? certKeyValid; + String? encryptionResultMessage; bool formEdited = false; @@ -140,20 +141,27 @@ class _EncryptionSettingsState extends State { if (!mounted) return; if (result.successful == true) { - final data = result.content as EncyptionValidation; - setState(() { - if (data.warningValidation != null && data.warningValidation != '') { + final data = result.content as EncryptionValidationResult; + if (data.isObject == true) { + final object = data.encryptionValidation!; + setState(() { + if (object.warningValidation != null && object.warningValidation != '') { + certKeyValidApi = 2; + validDataError = object.warningValidation; + } + else { + certKeyValidApi = 1; + validDataError = null; + } + certKeyValid = object; + }); + } + else { + setState(() { + encryptionResultMessage = data.message; certKeyValidApi = 2; - validDataError = data.warningValidation; - } - else { - certKeyValidApi = 1; - validDataError = null; - } - certKeyValid = data; - }); - } - else { + }); + } } } @@ -253,11 +261,13 @@ class _EncryptionSettingsState extends State { centerTitle: false, actions: [ IconButton( - onPressed: certKeyValidApi == 2 && validDataError != null + onPressed: certKeyValidApi == 2 && (validDataError != null || encryptionResultMessage != null) ? () => { showDialog( context: context, - builder: (context) => EncryptionErrorModal(error: validDataError!) + builder: (context) => EncryptionErrorModal( + error: validDataError ?? encryptionResultMessage ?? AppLocalizations.of(context)!.unknownError + ) ) } : null, icon: generateStatus(context, appConfigProvider, localValidationValid, certKeyValidApi, formEdited), diff --git a/lib/services/api_client.dart b/lib/services/api_client.dart index ba56a9c..66ac615 100644 --- a/lib/services/api_client.dart +++ b/lib/services/api_client.dart @@ -698,9 +698,18 @@ class ApiClientV2 { try { return ApiResponse( successful: result.successful, - content: result.body != null - ? EncyptionValidation.fromJson(jsonDecode(result.body!)) - : null + content: result.body != null ? EncryptionValidationResult( + isObject: false, + encryptionValidation: EncryptionValidation.fromJson(jsonDecode(result.body!)) + ) : null + ); + } on FormatException { + return ApiResponse( + successful: result.successful, + content: result.body != null ? EncryptionValidationResult( + isObject: false, + message: result.body + ) : null ); } catch (e, stackTrace) { Sentry.captureException(e, stackTrace: stackTrace);