Commit 93b2eee

derdilla <derdilla06@gmail.com>
2023-07-13 12:24:08
add warning for missing attributes
1 parent ce34783
Changed files (3)
lib/l10n/app_en.arb
@@ -236,6 +236,17 @@
   },
   "exportWarnConfigNotImportable": "Hey! Just a friendly heads up: the current export configuration won't be importable. To fix it, make sure you set the export type as CSV, enable the headline, and include one of the time formats available.",
   "@exportWarnConfigNotImportable": {},
+  "exportWarnNotEveryFieldExported": "Beware that you are not exporting all fields: {fields} {count, plural, one{is} other{are}} missing.",
+  "@exportWarnNotEveryFieldExported": {
+    "placeholders": {
+      "count": {
+        "type": "int"
+      },
+      "fields": {
+        "type": "String"
+      }
+    }
+  },
   "statistics": "Statistics",
   "@statistics": {},
   "measurementCount": "Measurement count",
lib/screens/subsettings/export_import_screen.dart
@@ -7,7 +7,7 @@ import 'package:flutter_gen/gen_l10n/app_localizations.dart';
 import 'package:intl/intl.dart';
 import 'package:jsaver/jSaver.dart';
 import 'package:provider/provider.dart';
-// TODO: make checks not neccessary; we can allow more, as fields are now nullable
+
 class ExportImportScreen extends StatelessWidget {
   const ExportImportScreen({super.key});
 
@@ -317,17 +317,27 @@ class _ExportWarnBannerState extends State<ExportWarnBanner> {
   bool _showWarnBanner = true;
   @override
   Widget build(BuildContext context) {
+    String? message;
     return Consumer<Settings>(builder: (context, settings, child) {
       if (_showWarnBanner && ![ExportFormat.csv, ExportFormat.db].contains(settings.exportFormat) ||
           settings.exportCsvHeadline == false ||
-          settings.exportCustomEntries &&
-              !((settings.exportItems.contains('timestampUnixMs') || settings.exportItems.contains('isoUTCTime'))) ||
+          settings.exportCustomEntries && !(['timestampUnixMs','isoUTCTime'].any((i) => settings.exportItems.contains(i))) ||
           ![',', '|'].contains(settings.csvFieldDelimiter) ||
           !['"', '\''].contains(settings.csvTextDelimiter)
       ) {
+        message = AppLocalizations.of(context)!.exportWarnConfigNotImportable;
+      } else if (_showWarnBanner && settings.exportCustomEntries &&
+          !(['systolic','diastolic', 'pulse', 'notes'].every((i) => settings.exportItems.contains(i)))) {
+        var missingAttributes = {'systolic','diastolic', 'pulse', 'notes'};
+        missingAttributes.removeWhere((e) => settings.exportItems.contains(e));
+
+        message = AppLocalizations.of(context)!.exportWarnNotEveryFieldExported(missingAttributes.length, missingAttributes.toString());
+      }
+
+      if (message != null) {
         return MaterialBanner(
             padding: const EdgeInsets.all(20),
-            content: Text(AppLocalizations.of(context)!.exportWarnConfigNotImportable),
+            content: Text(message!),
             actions: [
               TextButton(
                   onPressed: () {
lib/main.dart
@@ -49,11 +49,7 @@ class AppRoot extends StatelessWidget {
           GlobalWidgetsLocalizations.delegate,
           GlobalCupertinoLocalizations.delegate,
         ],
-        supportedLocales: const [
-          Locale('en'), // English
-          Locale('de'), // German
-          Locale('zh'), // generic Chinese; The file present is actually zh_Hans
-        ],
+        supportedLocales: AppLocalizations.supportedLocales,
         home: const AppHome(),
       );
     });