From f8977147f6084aa08a4e0fc66a0fe170cf74e8e6 Mon Sep 17 00:00:00 2001 From: Christien Rioux Date: Wed, 9 Apr 2025 15:38:30 -0400 Subject: [PATCH] remove things that fail to deserialize --- .../models/local_account/local_account.dart | 11 ++++++++-- .../models/user_login/user_login.dart | 11 ++++++++-- packages/veilid_support/lib/src/table_db.dart | 22 ++++++++++++++----- .../veilid_support/lib/src/veilid_log.dart | 1 + 4 files changed, 36 insertions(+), 9 deletions(-) diff --git a/lib/account_manager/models/local_account/local_account.dart b/lib/account_manager/models/local_account/local_account.dart index 1ec6d22..49506d0 100644 --- a/lib/account_manager/models/local_account/local_account.dart +++ b/lib/account_manager/models/local_account/local_account.dart @@ -40,6 +40,13 @@ sealed class LocalAccount with _$LocalAccount { required String name, }) = _LocalAccount; - factory LocalAccount.fromJson(dynamic json) => - _$LocalAccountFromJson(json as Map); + factory LocalAccount.fromJson(dynamic json) { + try { + return _$LocalAccountFromJson(json as Map); + // Need to catch any errors here too + // ignore: avoid_catches_without_on_clauses + } catch (e, st) { + throw Exception('invalid local account: $e\n$st'); + } + } } diff --git a/lib/account_manager/models/user_login/user_login.dart b/lib/account_manager/models/user_login/user_login.dart index d43fdfd..4d96d38 100644 --- a/lib/account_manager/models/user_login/user_login.dart +++ b/lib/account_manager/models/user_login/user_login.dart @@ -23,6 +23,13 @@ sealed class UserLogin with _$UserLogin { required Timestamp lastActive, }) = _UserLogin; - factory UserLogin.fromJson(dynamic json) => - _$UserLoginFromJson(json as Map); + factory UserLogin.fromJson(dynamic json) { + try { + return _$UserLoginFromJson(json as Map); + // Need to catch any errors here too + // ignore: avoid_catches_without_on_clauses + } catch (e, st) { + throw Exception('invalid user login: $e\n$st'); + } + } } diff --git a/packages/veilid_support/lib/src/table_db.dart b/packages/veilid_support/lib/src/table_db.dart index 522a837..eb7fe99 100644 --- a/packages/veilid_support/lib/src/table_db.dart +++ b/packages/veilid_support/lib/src/table_db.dart @@ -6,6 +6,9 @@ import 'package:async_tools/async_tools.dart'; import 'package:meta/meta.dart'; import 'package:veilid/veilid.dart'; +import '../veilid_support.dart'; +import 'veilid_log.dart'; + Future tableScope( String name, Future Function(VeilidTableDB tdb) callback, {int columnCount = 1}) async { @@ -48,11 +51,20 @@ abstract mixin class TableDBBackedJson { /// Load things from storage @protected Future load() async { - final obj = await tableScope(tableName(), (tdb) async { - final objJson = await tdb.loadStringJson(0, tableKeyName()); - return valueFromJson(objJson); - }); - return obj; + try { + final obj = await tableScope(tableName(), (tdb) async { + final objJson = await tdb.loadStringJson(0, tableKeyName()); + return valueFromJson(objJson); + }); + return obj; + } on Exception catch (e, st) { + veilidLoggy.debug( + 'Unable to load data from table store: ' + '${tableName()}:${tableKeyName()}', + e, + st); + return null; + } } /// Store things to storage diff --git a/packages/veilid_support/lib/src/veilid_log.dart b/packages/veilid_support/lib/src/veilid_log.dart index 3b35b5d..4c9ad0b 100644 --- a/packages/veilid_support/lib/src/veilid_log.dart +++ b/packages/veilid_support/lib/src/veilid_log.dart @@ -69,6 +69,7 @@ void processLog(VeilidLog log) { } void initVeilidLog(bool debugMode) { + // Always allow LOG_TRACE option // ignore: do_not_use_environment const isTrace = String.fromEnvironment('LOG_TRACE') != ''; LogLevel logLevel;