Skip to content

Commit b1c7d14

Browse files
feat(cat-voices): dev tools logs (#2617)
* chore: migrate LoggingService setter to methods * feat: collecting logs + LoggingService settings * chore: error catching while initializing LoggingService * chore: register LoggingService * feat: log level selector * feat: toggling log collection * feat: exporting logs * feat: enable logs card in DevTools page * use debugPrint for logs * refactor: move cards into separate dir * feat: integrate documents count watch * chore: missing comma
1 parent 26e5296 commit b1c7d14

33 files changed

+791
-110
lines changed

catalyst_voices/apps/voices/lib/configs/bootstrap.dart

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,17 +35,15 @@ Future<BootstrapArgs> bootstrap({
3535
GoRouter? router,
3636
AppEnvironment? environment,
3737
}) async {
38-
_loggingService
39-
..level = kDebugMode ? Level.FINER : Level.OFF
40-
..printLogs = kDebugMode;
38+
await _loggingService.init();
4139

4240
GoRouter.optionURLReflectsImperativeAPIs = true;
4341
setPathUrlStrategy();
4442

4543
environment ??= AppEnvironment.fromEnv();
4644

4745
await _cleanupOldStorages();
48-
await registerDependencies(environment: environment);
46+
await registerDependencies(environment: environment, loggingService: _loggingService);
4947
await _initCryptoUtils();
5048

5149
final configSource = ApiConfigSource(Dependencies.instance.get());
@@ -104,10 +102,12 @@ void registerConfig(AppConfig config) {
104102
@visibleForTesting
105103
Future<void> registerDependencies({
106104
AppEnvironment environment = const AppEnvironment.dev(),
105+
LoggingService? loggingService,
107106
}) async {
108107
if (!Dependencies.instance.isInitialized) {
109108
await Dependencies.instance.init(
110109
environment: environment,
110+
loggingService: loggingService,
111111
);
112112
}
113113
}

catalyst_voices/apps/voices/lib/dependency/dependencies.dart

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,14 @@ final class Dependencies extends DependencyProvider {
3131

3232
Future<void> init({
3333
required AppEnvironment environment,
34+
LoggingService? loggingService,
3435
}) async {
3536
DependencyProvider.instance = this;
3637

3738
registerSingleton<AppEnvironment>(environment);
39+
if (loggingService != null) {
40+
registerSingleton<LoggingService>(loggingService);
41+
}
3842

3943
_registerStorages();
4044
_registerUtils();
@@ -165,6 +169,9 @@ final class Dependencies extends DependencyProvider {
165169
return DevToolsBloc(
166170
get<DevToolsService>(),
167171
get<SyncManager>(),
172+
isRegistered<LoggingService>() ? get<LoggingService>() : null,
173+
get<DownloaderService>(),
174+
get<DocumentsService>(),
168175
);
169176
});
170177
}

catalyst_voices/apps/voices/lib/pages/dev_tools/widgets/app_info_card.dart renamed to catalyst_voices/apps/voices/lib/pages/dev_tools/cards/app_info_card.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1+
import 'package:catalyst_voices/pages/dev_tools/cards/info_card.dart';
12
import 'package:catalyst_voices/pages/dev_tools/widgets/build_mode_text.dart';
23
import 'package:catalyst_voices/pages/dev_tools/widgets/build_number_text.dart';
3-
import 'package:catalyst_voices/pages/dev_tools/widgets/info_card.dart';
44
import 'package:catalyst_voices/pages/dev_tools/widgets/value_text.dart';
55
import 'package:catalyst_voices_blocs/catalyst_voices_blocs.dart';
66
import 'package:catalyst_voices_models/catalyst_voices_models.dart';

catalyst_voices/apps/voices/lib/pages/dev_tools/widgets/config_card.dart renamed to catalyst_voices/apps/voices/lib/pages/dev_tools/cards/config_card.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import 'package:catalyst_cardano_serialization/catalyst_cardano_serialization.dart';
2-
import 'package:catalyst_voices/pages/dev_tools/widgets/info_card.dart';
2+
import 'package:catalyst_voices/pages/dev_tools/cards/info_card.dart';
33
import 'package:catalyst_voices/pages/dev_tools/widgets/value_text.dart';
44
import 'package:catalyst_voices_blocs/catalyst_voices_blocs.dart';
55
import 'package:catalyst_voices_models/catalyst_voices_models.dart';

catalyst_voices/apps/voices/lib/pages/dev_tools/widgets/documents_card.dart renamed to catalyst_voices/apps/voices/lib/pages/dev_tools/cards/documents_card.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1+
import 'package:catalyst_voices/pages/dev_tools/cards/info_card.dart';
12
import 'package:catalyst_voices/pages/dev_tools/widgets/documents_count_text.dart';
2-
import 'package:catalyst_voices/pages/dev_tools/widgets/info_card.dart';
33
import 'package:catalyst_voices/pages/dev_tools/widgets/sync_stats_text.dart';
44
import 'package:catalyst_voices/pages/dev_tools/widgets/value_text.dart';
55
import 'package:catalyst_voices/widgets/widgets.dart';

catalyst_voices/apps/voices/lib/pages/dev_tools/widgets/gateway_info_card.dart renamed to catalyst_voices/apps/voices/lib/pages/dev_tools/cards/gateway_info_card.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import 'package:catalyst_voices/pages/dev_tools/widgets/info_card.dart';
1+
import 'package:catalyst_voices/pages/dev_tools/cards/info_card.dart';
22
import 'package:catalyst_voices_blocs/catalyst_voices_blocs.dart';
33
import 'package:catalyst_voices_models/catalyst_voices_models.dart';
44
import 'package:flutter/material.dart';
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import 'package:catalyst_voices/pages/dev_tools/cards/info_card.dart';
2+
import 'package:catalyst_voices/pages/dev_tools/widgets/logs_collect_toggle.dart';
3+
import 'package:catalyst_voices/pages/dev_tools/widgets/logs_export_button.dart';
4+
import 'package:catalyst_voices/pages/dev_tools/widgets/logs_level_selector.dart';
5+
import 'package:catalyst_voices_blocs/catalyst_voices_blocs.dart';
6+
import 'package:flutter/widgets.dart';
7+
8+
class LogsCard extends StatelessWidget {
9+
const LogsCard({super.key});
10+
11+
@override
12+
Widget build(BuildContext context) {
13+
return BlocSelector<DevToolsBloc, DevToolsState, bool>(
14+
selector: (state) => state.areLogsOptionsAvailable,
15+
builder: (context, state) => _LogsCard(isAvailable: state),
16+
);
17+
}
18+
}
19+
20+
class _LogsCard extends StatelessWidget {
21+
final bool isAvailable;
22+
23+
const _LogsCard({
24+
required this.isAvailable,
25+
});
26+
27+
@override
28+
Widget build(BuildContext context) {
29+
return InfoCard(
30+
title: const Text('Logs'),
31+
children: [
32+
if (isAvailable) ...[
33+
const LogsLevelSelector(),
34+
const LogsCollectToggle(),
35+
const LogsExportButton(),
36+
] else ...[
37+
const Text('Not Available'),
38+
],
39+
],
40+
);
41+
}
42+
}

catalyst_voices/apps/voices/lib/pages/dev_tools/dev_tools_page.dart

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1-
import 'package:catalyst_voices/pages/dev_tools/widgets/app_info_card.dart';
2-
import 'package:catalyst_voices/pages/dev_tools/widgets/config_card.dart';
3-
import 'package:catalyst_voices/pages/dev_tools/widgets/documents_card.dart';
1+
import 'package:catalyst_voices/pages/dev_tools/cards/app_info_card.dart';
2+
import 'package:catalyst_voices/pages/dev_tools/cards/config_card.dart';
3+
import 'package:catalyst_voices/pages/dev_tools/cards/documents_card.dart';
4+
import 'package:catalyst_voices/pages/dev_tools/cards/gateway_info_card.dart';
5+
import 'package:catalyst_voices/pages/dev_tools/cards/logs_card.dart';
46
import 'package:catalyst_voices/pages/dev_tools/widgets/environment_card.dart';
5-
import 'package:catalyst_voices/pages/dev_tools/widgets/gateway_info_card.dart';
67
import 'package:catalyst_voices/pages/dev_tools/widgets/x_close_button.dart';
78
import 'package:catalyst_voices/widgets/widgets.dart';
89
import 'package:catalyst_voices_blocs/catalyst_voices_blocs.dart';
@@ -49,6 +50,8 @@ class _DevToolsPageState extends State<DevToolsPage> {
4950
ConfigCard(),
5051
SizedBox(height: 12),
5152
DocumentsCard(),
53+
SizedBox(height: 12),
54+
LogsCard(),
5255
],
5356
),
5457
);
@@ -64,6 +67,7 @@ class _DevToolsPageState extends State<DevToolsPage> {
6467
@override
6568
void dispose() {
6669
_bloc?.add(const StopWatchingSystemInfoEvent());
70+
_bloc?.add(const StopWatchingDocumentsEvent());
6771
_bloc = null;
6872
super.dispose();
6973
}
@@ -74,6 +78,7 @@ class _DevToolsPageState extends State<DevToolsPage> {
7478

7579
_bloc = context.read<DevToolsBloc>()
7680
..add(const UpdateAllEvent())
77-
..add(const WatchSystemInfoEvent());
81+
..add(const WatchSystemInfoEvent())
82+
..add(const WatchDocumentsEvent());
7883
}
7984
}

catalyst_voices/apps/voices/lib/pages/dev_tools/widgets/environment_card.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import 'package:catalyst_voices/pages/dev_tools/widgets/info_card.dart';
1+
import 'package:catalyst_voices/pages/dev_tools/cards/info_card.dart';
22
import 'package:catalyst_voices/pages/dev_tools/widgets/value_text.dart';
33
import 'package:catalyst_voices_blocs/catalyst_voices_blocs.dart';
44
import 'package:catalyst_voices_models/catalyst_voices_models.dart';

0 commit comments

Comments
 (0)