Commit 5c29e8b

derdilla <82763757+NobodyForNothing@users.noreply.github.com>
2023-12-20 15:08:57
update ExportColumnsManager json serialization style
Signed-off-by: derdilla <82763757+NobodyForNothing@users.noreply.github.com>
1 parent 80a8f57
Changed files (2)
lib
test
model
lib/model/storage/export_columns_store.dart
@@ -76,7 +76,7 @@ class ExportColumnsManager extends ChangeNotifier { // TODO: separate ExportColu
     return UnmodifiableListView(columns);
   }
 
-  String toJson() { // TODO: update from and TO json to new style
+  Map<String, dynamic> toMap() {
     final columns = [];
     for (final c in _userColumns.values) {
       switch (c) {
@@ -102,14 +102,15 @@ class ExportColumnsManager extends ChangeNotifier { // TODO: separate ExportColu
           break;
       }
     }
-    return jsonEncode({
+    return {
       'userColumns': columns,
-    });
+    };
   }
 
-  factory ExportColumnsManager.fromJson(String jsonString) {
-    final json = jsonDecode(jsonString);
-    final List<dynamic> jsonUserColumns = json['userColumns'];
+  String toJson() => jsonEncode(toMap());
+
+  factory ExportColumnsManager.fromMap(Map<String, dynamic> map) {
+    final List<dynamic> jsonUserColumns = map['userColumns'];
     final manager = ExportColumnsManager();
     for (final Map<String, dynamic> c in jsonUserColumns) {
       switch (c['t']) {
@@ -123,8 +124,16 @@ class ExportColumnsManager extends ChangeNotifier { // TODO: separate ExportColu
           assert(false, 'Unexpected column type ${c['t']}.');
       }
     }
-
     return manager;
   }
+
+  factory ExportColumnsManager.fromJson(String jsonString) {
+    try {
+      return ExportColumnsManager.fromMap(jsonDecode(jsonString));
+    } catch (e) {
+      assert(e is FormatException || e is TypeError);
+      return ExportColumnsManager();
+    }
+  }
 }
 
test/model/export_import/columns_store_test.dart
@@ -4,7 +4,7 @@ import 'package:blood_pressure_app/model/storage/export_columns_store.dart';
 import 'package:flutter_test/flutter_test.dart';
 
 void main() {
-  group('ExportColumnsManager', () {
+  group('ExportColumnsManager', () { // TODO merge with export_columns_store_test
     test('should allow adding columns', () async {
       final manager = ExportColumnsManager();
       final c1 = UserColumn('test', 'test', '\$SYS');