Implemented feedback dialog

This commit is contained in:
2025-07-01 22:23:12 +02:00
parent 4e43ead072
commit dc8efbdd61

View File

@@ -1,3 +1,4 @@
import 'package:analyzer_plugin/utilities/pair.dart';
import 'package:cabo_counter/l10n/app_localizations.dart'; import 'package:cabo_counter/l10n/app_localizations.dart';
import 'package:cabo_counter/services/config_service.dart'; import 'package:cabo_counter/services/config_service.dart';
import 'package:cabo_counter/services/local_storage_service.dart'; import 'package:cabo_counter/services/local_storage_service.dart';
@@ -125,27 +126,7 @@ class _SettingsViewState extends State<SettingsView> {
onPressed: () async { onPressed: () async {
final success = final success =
await LocalStorageService.importJsonFile(); await LocalStorageService.importJsonFile();
if (!success && context.mounted) { showFeedbackDialog(success);
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),
),
],
));
}
}), }),
const SizedBox( const SizedBox(
width: 20, width: 20,
@@ -236,4 +217,40 @@ class _SettingsViewState extends State<SettingsView> {
Future<PackageInfo> _getPackageInfo() async { Future<PackageInfo> _getPackageInfo() async {
return await PackageInfo.fromPlatform(); 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<String, String> _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);
}
}
} }