diff --git a/devtools_options.yaml b/devtools_options.yaml new file mode 100644 index 0000000..7e7e7f6 --- /dev/null +++ b/devtools_options.yaml @@ -0,0 +1 @@ +extensions: diff --git a/lib/app.dart b/lib/app.dart index 44802bd..3cb2093 100644 --- a/lib/app.dart +++ b/lib/app.dart @@ -10,6 +10,7 @@ import 'account_manager/account_manager.dart'; import 'router/router.dart'; import 'settings/settings.dart'; import 'tick.dart'; +import 'veilid_processor/veilid_processor.dart'; class VeilidChatApp extends StatelessWidget { const VeilidChatApp({ @@ -31,6 +32,9 @@ class VeilidChatApp extends StatelessWidget { state: LocalizationProvider.of(context).state, child: MultiBlocProvider( providers: [ + BlocProvider( + create: (context) => + ConnectionStateCubit(ProcessorRepository.instance)), BlocProvider( create: (context) => RouterCubit(AccountRepository.instance), diff --git a/lib/init.dart b/lib/init.dart index 29c2db2..edc954b 100644 --- a/lib/init.dart +++ b/lib/init.dart @@ -19,11 +19,11 @@ Future initializeVeilid() async { // Veilid logging initVeilidLog(kDebugMode); - // DHT Record Pool - await DHTRecordPool.init(); - // Startup Veilid await ProcessorRepository.instance.startup(); + + // DHT Record Pool + await DHTRecordPool.init(); } // Initialize repositories diff --git a/lib/tools/state_logger.dart b/lib/tools/state_logger.dart index 28230a8..0f27504 100644 --- a/lib/tools/state_logger.dart +++ b/lib/tools/state_logger.dart @@ -1,33 +1,60 @@ import 'package:bloc/bloc.dart'; +import 'package:loggy/loggy.dart'; import 'loggy.dart'; +const Map _blocChangeLogLevels = { + 'ConnectionStateCubit': LogLevel.off +}; +const Map _blocCreateCloseLogLevels = {}; +const Map _blocErrorLogLevels = {}; + /// [BlocObserver] for the VeilidChat application that /// observes all state changes. class StateLogger extends BlocObserver { /// {@macro counter_observer} const StateLogger(); + void _checkLogLevel( + Map blocLogLevels, + LogLevel defaultLogLevel, + BlocBase bloc, + void Function(LogLevel) closure) { + final logLevel = + blocLogLevels[bloc.runtimeType.toString()] ?? defaultLogLevel; + if (logLevel != LogLevel.off) { + closure(logLevel); + } + } + @override void onChange(BlocBase bloc, Change change) { super.onChange(bloc, change); - log.debug('Change: ${bloc.runtimeType} $change'); + _checkLogLevel(_blocChangeLogLevels, LogLevel.debug, bloc, (logLevel) { + log.log(logLevel, 'Change: ${bloc.runtimeType} $change'); + }); } @override void onCreate(BlocBase bloc) { super.onCreate(bloc); - log.debug('Create: ${bloc.runtimeType}'); + _checkLogLevel(_blocCreateCloseLogLevels, LogLevel.debug, bloc, (logLevel) { + log.log(logLevel, 'Create: ${bloc.runtimeType}'); + }); } @override void onClose(BlocBase bloc) { super.onClose(bloc); - log.debug('Close: ${bloc.runtimeType}'); + _checkLogLevel(_blocCreateCloseLogLevels, LogLevel.debug, bloc, (logLevel) { + log.log(logLevel, 'Close: ${bloc.runtimeType}'); + }); } @override void onError(BlocBase bloc, Object error, StackTrace stackTrace) { super.onError(bloc, error, stackTrace); - log.error('Error: ${bloc.runtimeType} $error\n$stackTrace'); + _checkLogLevel(_blocErrorLogLevels, LogLevel.error, bloc, (logLevel) { + log.log(logLevel, 'Error: ${bloc.runtimeType} $error\n$stackTrace'); + }); } }