From 4e43ead072888b2f36514eac810105b15dec1e40 Mon Sep 17 00:00:00 2001 From: Felix Kirchner Date: Tue, 1 Jul 2025 22:22:56 +0200 Subject: [PATCH 1/8] Updated import method --- lib/services/local_storage_service.dart | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/lib/services/local_storage_service.dart b/lib/services/local_storage_service.dart index e3fddcc..eafcdc4 100644 --- a/lib/services/local_storage_service.dart +++ b/lib/services/local_storage_service.dart @@ -111,7 +111,7 @@ class LocalStorageService { } /// Opens the file picker to import a JSON file and loads the game data from it. - static Future importJsonFile() async { + static Future importJsonFile() async { final result = await FilePicker.platform.pickFiles( dialogTitle: 'Wähle eine Datei mit Spieldaten aus', type: FileType.custom, @@ -121,14 +121,14 @@ class LocalStorageService { if (result == null) { print( '[local_storage_service.dart] Der Filepicker-Dialog wurde abgebrochen'); - return false; + return 0; } try { final jsonString = await _readFileContent(result.files.single); if (!await validateJsonSchema(jsonString)) { - return false; + return -1; } final jsonData = json.decode(jsonString) as List; gameManager.gameList = jsonData @@ -137,15 +137,16 @@ class LocalStorageService { .toList(); print( '[local_storage_service.dart] Die Datei wurde erfolgreich Importiertn'); - return true; + await saveGameSessions(); + return 1; } on FormatException catch (e) { print( '[local_storage_service.dart] Ungültiges JSON-Format. Exception: $e'); - return false; + return -2; } on Exception catch (e) { print( '[local_storage_service.dart] Fehler beim Dateizugriff. Exception: $e'); - return false; + return -3; } } From dc8efbdd6130db0425dcc62772bf81970be1edf4 Mon Sep 17 00:00:00 2001 From: Felix Kirchner Date: Tue, 1 Jul 2025 22:23:12 +0200 Subject: [PATCH 2/8] Implemented feedback dialog --- lib/views/settings_view.dart | 59 +++++++++++++++++++++++------------- 1 file changed, 38 insertions(+), 21 deletions(-) diff --git a/lib/views/settings_view.dart b/lib/views/settings_view.dart index 53eb92d..2b185ef 100644 --- a/lib/views/settings_view.dart +++ b/lib/views/settings_view.dart @@ -1,3 +1,4 @@ +import 'package:analyzer_plugin/utilities/pair.dart'; import 'package:cabo_counter/l10n/app_localizations.dart'; import 'package:cabo_counter/services/config_service.dart'; import 'package:cabo_counter/services/local_storage_service.dart'; @@ -125,27 +126,7 @@ class _SettingsViewState extends State { onPressed: () async { final success = await LocalStorageService.importJsonFile(); - if (!success && context.mounted) { - showCupertinoDialog( - context: context, - builder: (context) => CupertinoAlertDialog( - title: Text( - AppLocalizations.of(context) - .error), - content: Text( - AppLocalizations.of(context) - .error_import), - actions: [ - CupertinoDialogAction( - child: Text( - AppLocalizations.of(context) - .ok), - onPressed: () => - Navigator.pop(context), - ), - ], - )); - } + showFeedbackDialog(success); }), const SizedBox( width: 20, @@ -236,4 +217,40 @@ class _SettingsViewState extends State { Future _getPackageInfo() async { return await PackageInfo.fromPlatform(); } + + void showFeedbackDialog(int success) { + if (success == 0) return; + final content = _getDialogContent(success); + + showCupertinoDialog( + context: context, + builder: (context) { + return CupertinoAlertDialog( + title: Text(content.first), + content: Text(content.last), + actions: [ + CupertinoDialogAction( + child: const Text('OK'), + onPressed: () => Navigator.pop(context), + ), + ], + ); + }); + } + + Pair _getDialogContent(int success) { + if (success == 1) { + return Pair(AppLocalizations.of(context).import_sucess_title, + AppLocalizations.of(context).import_sucess_message); + } else if (success == -1) { + return Pair(AppLocalizations.of(context).import_validation_error_title, + AppLocalizations.of(context).import_validation_error_title); + } else if (success == -2) { + return Pair(AppLocalizations.of(context).import_format_error_title, + AppLocalizations.of(context).import_format_error_title); + } else { + return Pair(AppLocalizations.of(context).import_generic_error_title, + AppLocalizations.of(context).import_generic_error_title); + } + } } From 98bc9bd837ed70fe3c4793755458fbcfaf1f7b6a Mon Sep 17 00:00:00 2001 From: Felix Kirchner Date: Tue, 1 Jul 2025 22:25:29 +0200 Subject: [PATCH 3/8] Added localization --- lib/l10n/app_de.arb | 11 ++++++- lib/l10n/app_en.arb | 11 ++++++- lib/l10n/app_localizations.dart | 48 ++++++++++++++++++++++++++++-- lib/l10n/app_localizations_de.dart | 26 +++++++++++++++- lib/l10n/app_localizations_en.dart | 26 +++++++++++++++- lib/views/settings_view.dart | 2 +- pubspec.yaml | 3 +- 7 files changed, 118 insertions(+), 9 deletions(-) diff --git a/lib/l10n/app_de.arb b/lib/l10n/app_de.arb index 3cb8c5e..26d9320 100644 --- a/lib/l10n/app_de.arb +++ b/lib/l10n/app_de.arb @@ -81,7 +81,16 @@ "import_data": "Daten importieren", "export_data": "Daten exportieren", "error": "Fehler", - "error_import": "Datei konnte nicht importiert werden", + + "import_sucess_title": "Import erfolgreich", + "import_sucess_message":"Die Spieldaten wurden erfolgreich importiert.", + "import_validation_error_title": "Validierung fehlgeschlagen", + "import_validation_error_message": "Es wurden keine Cabo-Counter Spieldaten gefunden. Bitte stellen Sie sicher, dass es sich um eine gültige Cabo-Counter Exportdatei handelt.", + "import_format_error_title": "Falsches Format", + "import_format_error_message": "Die Datei ist kein gültiges JSON-Format oder enthält ungültige Daten.", + "import_generic_error_title": "Import fehlgeschlagen", + "import_generic_error_message": "Der Import ist fehlgeschlagen.", + "error_export": "Datei konnte nicht exportiert werden", "error_found": "Fehler gefunden?", "create_issue": "Issue erstellen", diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index f76e04a..120d8a0 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -81,7 +81,16 @@ "import_data": "Import Data", "export_data": "Export Data", "error": "Error", - "error_import": "Could not import file", + + "import_sucess_title": "Import successful", + "import_sucess_message":"The game data has been successfully imported.", + "import_validation_error_title": "Validation failed", + "import_validation_error_message": "No Cabo-Counter game data was found. Please make sure that this is a valid Cabo-Counter export file.", + "import_format_error_title": "Wrong format", + "import_format_error_message": "The file is not a valid JSON format or contains invalid data.", + "import_generic_error_title": "Import failed", + "import_generic_error_message": "The import has failed.", + "error_export": "Could not export file", "error_found": "Found a bug?", "create_issue": "Create Issue", diff --git a/lib/l10n/app_localizations.dart b/lib/l10n/app_localizations.dart index 1751ab7..84b9a42 100644 --- a/lib/l10n/app_localizations.dart +++ b/lib/l10n/app_localizations.dart @@ -452,11 +452,53 @@ abstract class AppLocalizations { /// **'Fehler'** String get error; - /// No description provided for @error_import. + /// No description provided for @import_sucess_title. /// /// In de, this message translates to: - /// **'Datei konnte nicht importiert werden'** - String get error_import; + /// **'Import erfolgreich'** + String get import_sucess_title; + + /// No description provided for @import_sucess_message. + /// + /// In de, this message translates to: + /// **'Die Spieldaten wurden erfolgreich importiert.'** + String get import_sucess_message; + + /// No description provided for @import_validation_error_title. + /// + /// In de, this message translates to: + /// **'Validierung fehlgeschlagen'** + String get import_validation_error_title; + + /// No description provided for @import_validation_error_message. + /// + /// In de, this message translates to: + /// **'Es wurden keine Cabo-Counter Spieldaten gefunden. Bitte stellen Sie sicher, dass es sich um eine gültige Cabo-Counter Exportdatei handelt.'** + String get import_validation_error_message; + + /// No description provided for @import_format_error_title. + /// + /// In de, this message translates to: + /// **'Falsches Format'** + String get import_format_error_title; + + /// No description provided for @import_format_error_message. + /// + /// In de, this message translates to: + /// **'Die Datei ist kein gültiges JSON-Format oder enthält ungültige Daten.'** + String get import_format_error_message; + + /// No description provided for @import_generic_error_title. + /// + /// In de, this message translates to: + /// **'Import fehlgeschlagen'** + String get import_generic_error_title; + + /// No description provided for @import_generic_error_message. + /// + /// In de, this message translates to: + /// **'Der Import ist fehlgeschlagen.'** + String get import_generic_error_message; /// No description provided for @error_export. /// diff --git a/lib/l10n/app_localizations_de.dart b/lib/l10n/app_localizations_de.dart index 434b5f1..e7719b1 100644 --- a/lib/l10n/app_localizations_de.dart +++ b/lib/l10n/app_localizations_de.dart @@ -195,7 +195,31 @@ class AppLocalizationsDe extends AppLocalizations { String get error => 'Fehler'; @override - String get error_import => 'Datei konnte nicht importiert werden'; + String get import_sucess_title => 'Import erfolgreich'; + + @override + String get import_sucess_message => + 'Die Spieldaten wurden erfolgreich importiert.'; + + @override + String get import_validation_error_title => 'Validierung fehlgeschlagen'; + + @override + String get import_validation_error_message => + 'Es wurden keine Cabo-Counter Spieldaten gefunden. Bitte stellen Sie sicher, dass es sich um eine gültige Cabo-Counter Exportdatei handelt.'; + + @override + String get import_format_error_title => 'Falsches Format'; + + @override + String get import_format_error_message => + 'Die Datei ist kein gültiges JSON-Format oder enthält ungültige Daten.'; + + @override + String get import_generic_error_title => 'Import fehlgeschlagen'; + + @override + String get import_generic_error_message => 'Der Import ist fehlgeschlagen.'; @override String get error_export => 'Datei konnte nicht exportiert werden'; diff --git a/lib/l10n/app_localizations_en.dart b/lib/l10n/app_localizations_en.dart index 64cdb77..9f9ff13 100644 --- a/lib/l10n/app_localizations_en.dart +++ b/lib/l10n/app_localizations_en.dart @@ -192,7 +192,31 @@ class AppLocalizationsEn extends AppLocalizations { String get error => 'Error'; @override - String get error_import => 'Could not import file'; + String get import_sucess_title => 'Import successful'; + + @override + String get import_sucess_message => + 'The game data has been successfully imported.'; + + @override + String get import_validation_error_title => 'Validation failed'; + + @override + String get import_validation_error_message => + 'No Cabo-Counter game data was found. Please make sure that this is a valid Cabo-Counter export file.'; + + @override + String get import_format_error_title => 'Wrong format'; + + @override + String get import_format_error_message => + 'The file is not a valid JSON format or contains invalid data.'; + + @override + String get import_generic_error_title => 'Import failed'; + + @override + String get import_generic_error_message => 'The import has failed.'; @override String get error_export => 'Could not export file'; diff --git a/lib/views/settings_view.dart b/lib/views/settings_view.dart index 2b185ef..0f41d21 100644 --- a/lib/views/settings_view.dart +++ b/lib/views/settings_view.dart @@ -230,7 +230,7 @@ class _SettingsViewState extends State { content: Text(content.last), actions: [ CupertinoDialogAction( - child: const Text('OK'), + child: Text(AppLocalizations.of(context).ok), onPressed: () => Navigator.pop(context), ), ], diff --git a/pubspec.yaml b/pubspec.yaml index 89087f1..e464e51 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -2,7 +2,7 @@ name: cabo_counter description: "Mobile app for the card game Cabo" publish_to: 'none' -version: 0.3.2+245 +version: 0.3.2+252 environment: sdk: ^3.5.4 @@ -26,6 +26,7 @@ dependencies: sdk: flutter intl: any syncfusion_flutter_charts: ^30.1.37 + analyzer_plugin: ^0.13.4 dev_dependencies: flutter_test: From f7ea02603724c1386c11621e8e606c72e3dff90a Mon Sep 17 00:00:00 2001 From: Felix Kirchner Date: Tue, 1 Jul 2025 22:32:33 +0200 Subject: [PATCH 4/8] Corrected typos --- lib/l10n/app_de.arb | 4 ++-- lib/l10n/app_en.arb | 4 ++-- lib/l10n/app_localizations.dart | 8 ++++---- lib/l10n/app_localizations_de.dart | 4 ++-- lib/l10n/app_localizations_en.dart | 4 ++-- lib/views/settings_view.dart | 10 +++++----- pubspec.yaml | 2 +- 7 files changed, 18 insertions(+), 18 deletions(-) diff --git a/lib/l10n/app_de.arb b/lib/l10n/app_de.arb index 26d9320..51147d0 100644 --- a/lib/l10n/app_de.arb +++ b/lib/l10n/app_de.arb @@ -82,8 +82,8 @@ "export_data": "Daten exportieren", "error": "Fehler", - "import_sucess_title": "Import erfolgreich", - "import_sucess_message":"Die Spieldaten wurden erfolgreich importiert.", + "import_success_title": "Import erfolgreich", + "import_success_message":"Die Spieldaten wurden erfolgreich importiert.", "import_validation_error_title": "Validierung fehlgeschlagen", "import_validation_error_message": "Es wurden keine Cabo-Counter Spieldaten gefunden. Bitte stellen Sie sicher, dass es sich um eine gültige Cabo-Counter Exportdatei handelt.", "import_format_error_title": "Falsches Format", diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index 120d8a0..a6b1a8f 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -82,8 +82,8 @@ "export_data": "Export Data", "error": "Error", - "import_sucess_title": "Import successful", - "import_sucess_message":"The game data has been successfully imported.", + "import_success_title": "Import successful", + "import_success_message":"The game data has been successfully imported.", "import_validation_error_title": "Validation failed", "import_validation_error_message": "No Cabo-Counter game data was found. Please make sure that this is a valid Cabo-Counter export file.", "import_format_error_title": "Wrong format", diff --git a/lib/l10n/app_localizations.dart b/lib/l10n/app_localizations.dart index 84b9a42..a4e1edb 100644 --- a/lib/l10n/app_localizations.dart +++ b/lib/l10n/app_localizations.dart @@ -452,17 +452,17 @@ abstract class AppLocalizations { /// **'Fehler'** String get error; - /// No description provided for @import_sucess_title. + /// No description provided for @import_success_title. /// /// In de, this message translates to: /// **'Import erfolgreich'** - String get import_sucess_title; + String get import_success_title; - /// No description provided for @import_sucess_message. + /// No description provided for @import_success_message. /// /// In de, this message translates to: /// **'Die Spieldaten wurden erfolgreich importiert.'** - String get import_sucess_message; + String get import_success_message; /// No description provided for @import_validation_error_title. /// diff --git a/lib/l10n/app_localizations_de.dart b/lib/l10n/app_localizations_de.dart index e7719b1..b06d454 100644 --- a/lib/l10n/app_localizations_de.dart +++ b/lib/l10n/app_localizations_de.dart @@ -195,10 +195,10 @@ class AppLocalizationsDe extends AppLocalizations { String get error => 'Fehler'; @override - String get import_sucess_title => 'Import erfolgreich'; + String get import_success_title => 'Import erfolgreich'; @override - String get import_sucess_message => + String get import_success_message => 'Die Spieldaten wurden erfolgreich importiert.'; @override diff --git a/lib/l10n/app_localizations_en.dart b/lib/l10n/app_localizations_en.dart index 9f9ff13..2dfc72d 100644 --- a/lib/l10n/app_localizations_en.dart +++ b/lib/l10n/app_localizations_en.dart @@ -192,10 +192,10 @@ class AppLocalizationsEn extends AppLocalizations { String get error => 'Error'; @override - String get import_sucess_title => 'Import successful'; + String get import_success_title => 'Import successful'; @override - String get import_sucess_message => + String get import_success_message => 'The game data has been successfully imported.'; @override diff --git a/lib/views/settings_view.dart b/lib/views/settings_view.dart index 0f41d21..7172969 100644 --- a/lib/views/settings_view.dart +++ b/lib/views/settings_view.dart @@ -240,17 +240,17 @@ class _SettingsViewState extends State { Pair _getDialogContent(int success) { if (success == 1) { - return Pair(AppLocalizations.of(context).import_sucess_title, - AppLocalizations.of(context).import_sucess_message); + return Pair(AppLocalizations.of(context).import_success_title, + AppLocalizations.of(context).import_success_message); } else if (success == -1) { return Pair(AppLocalizations.of(context).import_validation_error_title, - AppLocalizations.of(context).import_validation_error_title); + AppLocalizations.of(context).import_validation_error_message); } else if (success == -2) { return Pair(AppLocalizations.of(context).import_format_error_title, - AppLocalizations.of(context).import_format_error_title); + AppLocalizations.of(context).import_format_error_message); } else { return Pair(AppLocalizations.of(context).import_generic_error_title, - AppLocalizations.of(context).import_generic_error_title); + AppLocalizations.of(context).import_generic_error_message); } } } diff --git a/pubspec.yaml b/pubspec.yaml index e464e51..ecff07a 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -2,7 +2,7 @@ name: cabo_counter description: "Mobile app for the card game Cabo" publish_to: 'none' -version: 0.3.2+252 +version: 0.3.2+253 environment: sdk: ^3.5.4 From 854afe1e7f6041d064f9119203e8d638a016f434 Mon Sep 17 00:00:00 2001 From: Felix Kirchner Date: Tue, 1 Jul 2025 22:39:15 +0200 Subject: [PATCH 5/8] Replaced pair with tuple --- lib/views/settings_view.dart | 31 +++++++++++++++++++------------ pubspec.yaml | 3 +-- 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/lib/views/settings_view.dart b/lib/views/settings_view.dart index 7172969..4876cc7 100644 --- a/lib/views/settings_view.dart +++ b/lib/views/settings_view.dart @@ -1,4 +1,3 @@ -import 'package:analyzer_plugin/utilities/pair.dart'; import 'package:cabo_counter/l10n/app_localizations.dart'; import 'package:cabo_counter/services/config_service.dart'; import 'package:cabo_counter/services/local_storage_service.dart'; @@ -226,8 +225,8 @@ class _SettingsViewState extends State { context: context, builder: (context) { return CupertinoAlertDialog( - title: Text(content.first), - content: Text(content.last), + title: Text(content.$1), + content: Text(content.$2), actions: [ CupertinoDialogAction( child: Text(AppLocalizations.of(context).ok), @@ -238,19 +237,27 @@ class _SettingsViewState extends State { }); } - Pair _getDialogContent(int success) { + (String, String) _getDialogContent(int success) { if (success == 1) { - return Pair(AppLocalizations.of(context).import_success_title, - AppLocalizations.of(context).import_success_message); + return ( + AppLocalizations.of(context).import_success_title, + AppLocalizations.of(context).import_success_message + ); } else if (success == -1) { - return Pair(AppLocalizations.of(context).import_validation_error_title, - AppLocalizations.of(context).import_validation_error_message); + return ( + AppLocalizations.of(context).import_validation_error_title, + AppLocalizations.of(context).import_validation_error_message + ); } else if (success == -2) { - return Pair(AppLocalizations.of(context).import_format_error_title, - AppLocalizations.of(context).import_format_error_message); + return ( + AppLocalizations.of(context).import_format_error_title, + AppLocalizations.of(context).import_format_error_message + ); } else { - return Pair(AppLocalizations.of(context).import_generic_error_title, - AppLocalizations.of(context).import_generic_error_message); + return ( + AppLocalizations.of(context).import_generic_error_title, + AppLocalizations.of(context).import_generic_error_message + ); } } } diff --git a/pubspec.yaml b/pubspec.yaml index ecff07a..c55a475 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -2,7 +2,7 @@ name: cabo_counter description: "Mobile app for the card game Cabo" publish_to: 'none' -version: 0.3.2+253 +version: 0.3.2+254 environment: sdk: ^3.5.4 @@ -26,7 +26,6 @@ dependencies: sdk: flutter intl: any syncfusion_flutter_charts: ^30.1.37 - analyzer_plugin: ^0.13.4 dev_dependencies: flutter_test: From c72db61997d4a6f3b471ebaceff177a42826562a Mon Sep 17 00:00:00 2001 From: Felix Kirchner Date: Tue, 1 Jul 2025 22:45:17 +0200 Subject: [PATCH 6/8] Destructed record --- lib/views/settings_view.dart | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/views/settings_view.dart b/lib/views/settings_view.dart index 4876cc7..068138a 100644 --- a/lib/views/settings_view.dart +++ b/lib/views/settings_view.dart @@ -219,14 +219,14 @@ class _SettingsViewState extends State { void showFeedbackDialog(int success) { if (success == 0) return; - final content = _getDialogContent(success); + final (title, message) = _getDialogContent(success); showCupertinoDialog( context: context, builder: (context) { return CupertinoAlertDialog( - title: Text(content.$1), - content: Text(content.$2), + title: Text(title), + content: Text(message), actions: [ CupertinoDialogAction( child: Text(AppLocalizations.of(context).ok), From ac2b071a7ec5b2d3d0b9dd7f0bc76042592b34fb Mon Sep 17 00:00:00 2001 From: Felix Kirchner Date: Tue, 1 Jul 2025 22:56:59 +0200 Subject: [PATCH 7/8] Implemented enum for import status --- lib/services/local_storage_service.dart | 20 +++++++---- lib/views/settings_view.dart | 48 +++++++++++++------------ 2 files changed, 40 insertions(+), 28 deletions(-) diff --git a/lib/services/local_storage_service.dart b/lib/services/local_storage_service.dart index eafcdc4..6039a7b 100644 --- a/lib/services/local_storage_service.dart +++ b/lib/services/local_storage_service.dart @@ -9,6 +9,14 @@ import 'package:flutter/services.dart'; import 'package:json_schema/json_schema.dart'; import 'package:path_provider/path_provider.dart'; +enum ImportStatus { + success, + canceled, + validationError, + formatError, + genericError +} + class LocalStorageService { static const String _fileName = 'game_data.json'; @@ -111,7 +119,7 @@ class LocalStorageService { } /// Opens the file picker to import a JSON file and loads the game data from it. - static Future importJsonFile() async { + static Future importJsonFile() async { final result = await FilePicker.platform.pickFiles( dialogTitle: 'Wähle eine Datei mit Spieldaten aus', type: FileType.custom, @@ -121,14 +129,14 @@ class LocalStorageService { if (result == null) { print( '[local_storage_service.dart] Der Filepicker-Dialog wurde abgebrochen'); - return 0; + return ImportStatus.canceled; } try { final jsonString = await _readFileContent(result.files.single); if (!await validateJsonSchema(jsonString)) { - return -1; + return ImportStatus.validationError; } final jsonData = json.decode(jsonString) as List; gameManager.gameList = jsonData @@ -138,15 +146,15 @@ class LocalStorageService { print( '[local_storage_service.dart] Die Datei wurde erfolgreich Importiertn'); await saveGameSessions(); - return 1; + return ImportStatus.success; } on FormatException catch (e) { print( '[local_storage_service.dart] Ungültiges JSON-Format. Exception: $e'); - return -2; + return ImportStatus.formatError; } on Exception catch (e) { print( '[local_storage_service.dart] Fehler beim Dateizugriff. Exception: $e'); - return -3; + return ImportStatus.genericError; } } diff --git a/lib/views/settings_view.dart b/lib/views/settings_view.dart index 068138a..270118f 100644 --- a/lib/views/settings_view.dart +++ b/lib/views/settings_view.dart @@ -217,7 +217,7 @@ class _SettingsViewState extends State { return await PackageInfo.fromPlatform(); } - void showFeedbackDialog(int success) { + void showFeedbackDialog(ImportStatus success) { if (success == 0) return; final (title, message) = _getDialogContent(success); @@ -237,27 +237,31 @@ class _SettingsViewState extends State { }); } - (String, String) _getDialogContent(int success) { - if (success == 1) { - return ( - AppLocalizations.of(context).import_success_title, - AppLocalizations.of(context).import_success_message - ); - } else if (success == -1) { - return ( - AppLocalizations.of(context).import_validation_error_title, - AppLocalizations.of(context).import_validation_error_message - ); - } else if (success == -2) { - return ( - AppLocalizations.of(context).import_format_error_title, - AppLocalizations.of(context).import_format_error_message - ); - } else { - return ( - AppLocalizations.of(context).import_generic_error_title, - AppLocalizations.of(context).import_generic_error_message - ); + (String, String) _getDialogContent(ImportStatus success) { + switch (success) { + case ImportStatus.success: + return ( + AppLocalizations.of(context).import_success_title, + AppLocalizations.of(context).import_success_message + ); + case ImportStatus.validationError: + return ( + AppLocalizations.of(context).import_validation_error_title, + AppLocalizations.of(context).import_validation_error_message + ); + + case ImportStatus.formatError: + return ( + AppLocalizations.of(context).import_format_error_title, + AppLocalizations.of(context).import_format_error_message + ); + case ImportStatus.genericError: + return ( + AppLocalizations.of(context).import_generic_error_title, + AppLocalizations.of(context).import_generic_error_message + ); + case ImportStatus.canceled: + return ('', ''); } } } From dc0482e9b7482ae1989e57aee00cff4d3dc7e5cc Mon Sep 17 00:00:00 2001 From: Felix Kirchner Date: Tue, 1 Jul 2025 22:59:54 +0200 Subject: [PATCH 8/8] Renamed input var --- lib/views/settings_view.dart | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/views/settings_view.dart b/lib/views/settings_view.dart index 270118f..b36347d 100644 --- a/lib/views/settings_view.dart +++ b/lib/views/settings_view.dart @@ -217,9 +217,9 @@ class _SettingsViewState extends State { return await PackageInfo.fromPlatform(); } - void showFeedbackDialog(ImportStatus success) { - if (success == 0) return; - final (title, message) = _getDialogContent(success); + void showFeedbackDialog(ImportStatus status) { + if (status == ImportStatus.canceled) return; + final (title, message) = _getDialogContent(status); showCupertinoDialog( context: context, @@ -237,8 +237,8 @@ class _SettingsViewState extends State { }); } - (String, String) _getDialogContent(ImportStatus success) { - switch (success) { + (String, String) _getDialogContent(ImportStatus status) { + switch (status) { case ImportStatus.success: return ( AppLocalizations.of(context).import_success_title,