···11+// GENERATED CODE - DO NOT MODIFY BY HAND
22+33+part of 'dev_tools_dao.dart';
44+55+// ignore_for_file: type=lint
66+mixin _$DevToolsDaoMixin on DatabaseAccessor<AppDatabase> {
77+ $DevSettingsTable get devSettings => attachedDatabase.devSettings;
88+ $DevNetworkLogsTable get devNetworkLogs => attachedDatabase.devNetworkLogs;
99+}
+26
lib/src/infrastructure/db/tables.dart
···633633 @override
634634 Set<Column> get primaryKey => {outboxId};
635635}
636636+637637+/// Stores developer settings/flags (e.g., debug mode enabled).
638638+class DevSettings extends Table {
639639+ IntColumn get id => integer().autoIncrement()();
640640+ TextColumn get key => text().unique()();
641641+ TextColumn get value => text()();
642642+643643+ /// Type of value: 'boolean', 'string', 'int'
644644+ TextColumn get type => text()();
645645+}
646646+647647+/// Stores network logs for the debug inspector.
648648+class DevNetworkLogs extends Table {
649649+ IntColumn get id => integer().autoIncrement()();
650650+ TextColumn get uuid => text().unique()();
651651+ TextColumn get method => text()();
652652+ TextColumn get url => text()();
653653+ IntColumn get statusCode => integer()();
654654+ TextColumn get requestHeaders => text()(); // JSON
655655+ TextColumn get responseHeaders => text()(); // JSON
656656+ TextColumn get requestBody => text().nullable()();
657657+ TextColumn get responseBody => text().nullable()();
658658+ DateTimeColumn get timestamp => dateTime()();
659659+ IntColumn get durationMs => integer()();
660660+ TextColumn get error => text().nullable()();
661661+}
+8-2
lib/src/infrastructure/network/dio_clients.dart
···1010///
1111/// This client is used for unauthenticated reads like fetching profiles, threads, and
1212/// search results.
1313-Dio createPublicDio({bool enableLogging = true}) {
1313+Dio createPublicDio({bool enableLogging = true, List<Interceptor> interceptors = const []}) {
1414 final dio = Dio(
1515 BaseOptions(
1616 baseUrl: publicApiBaseUrl,
···2121 ),
2222 );
23232424- dio.interceptors.addAll([if (enableLogging) LoggingInterceptor(), RetryInterceptor()]);
2424+ dio.interceptors.addAll([
2525+ if (enableLogging) LoggingInterceptor(),
2626+ ...interceptors,
2727+ RetryInterceptor(),
2828+ ]);
25292630 return dio;
2731}
···3741 DPoPNonceStore? nonceStore,
3842 SessionInvalidatedCallback? onSessionInvalidated,
3943 bool enableLogging = true,
4444+ List<Interceptor> interceptors = const [],
4045}) {
4146 final dio = Dio(
4247 BaseOptions(
···5762 onSessionInvalidated: onSessionInvalidated,
5863 ),
5964 ProxyInterceptor(),
6565+ ...interceptors,
6066 RetryInterceptor(),
6167 ]);
6268
+7-2
lib/src/infrastructure/network/providers.dart
···11import 'package:dio/dio.dart';
22+import 'package:flutter/foundation.dart';
23import 'package:lazurite/src/app/providers.dart';
34import 'package:lazurite/src/core/auth/session_model.dart';
45import 'package:lazurite/src/core/utils/logger_provider.dart';
···67import 'package:lazurite/src/features/auth/domain/auth_state.dart';
78import 'package:riverpod_annotation/riverpod_annotation.dart';
891010+import '../../features/debug/infrastructure/debug_network_interceptor.dart';
911import 'dio_clients.dart';
1012import 'xrpc_client.dart';
1113···1618/// This client is configured for the public AppView at public.api.bsky.app.
1719@Riverpod(keepAlive: true)
1820Dio dioPublic(Ref ref) {
1919- return createPublicDio();
2121+ final db = ref.watch(appDatabaseProvider);
2222+ return createPublicDio(interceptors: [if (kDebugMode) DebugNetworkInterceptor(db.devToolsDao)]);
2023}
21242225/// Provides the PDS Dio client for authenticated API access.
···3134 return null;
3235 }
33363737+ final db = ref.watch(appDatabaseProvider);
3838+3439 return createPdsDio(
3540 pdsUrl: session.pdsUrl,
3641 getSession: () => _readCurrentSession(ref),
···3843 nonceStore: ref.read(dpopNonceStoreProvider),
3944 onSessionInvalidated: () {
4045 try {
4141- final db = ref.read(appDatabaseProvider);
4246 db.feedContentDao.clearFeedContent('home', session.did);
4347 } catch (e) {
4448 /* Ignore if database not available */
···46504751 ref.read(authProvider.notifier).logout();
4852 },
5353+ interceptors: [if (kDebugMode) DebugNetworkInterceptor(db.devToolsDao)],
4954 );
5055}
5156