improve Firebase integration across Crashlytics, Analytics, and Performance

- Fix cold-start privacy bug: apply persisted collection preference on launch
- Disable Firebase collection in debug builds to avoid polluting prod data
- Add Crashlytics custom keys (is_logged_in, channel), user identifier, and
  WebSocket reconnection breadcrumbs for actionable crash reports
- Record non-fatal errors for server failures, WebSocket errors, and global
  asset fetch failures (skip timeouts/network errors to avoid noise)
- Update is_logged_in key and user identifier on login/logout transitions
- Log auth reconnection exhaustion before forced logout
- Add FirebaseAnalyticsObserver with named routes for automatic screen tracking
- Add static routeName constants to avoid duplicated string literals
- Add Firebase Performance Dio interceptor for automatic HTTP request tracing

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Tommy Chow 2026-03-08 00:16:13 -08:00
parent f07fe621bc
commit 6ede000c66
21 changed files with 191 additions and 41 deletions

View file

@ -44,7 +44,10 @@ class _HomeState extends State<Home> {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => const ReleaseNotes()),
MaterialPageRoute(
settings: const RouteSettings(name: ReleaseNotes.routeName),
builder: (context) => const ReleaseNotes(),
),
).then((_) => prefs.setString('last_shown_version', currentVersion));
}
}
@ -121,6 +124,7 @@ class _HomeState extends State<Home> {
onPressed: () => Navigator.push(
context,
MaterialPageRoute(
settings: const RouteSettings(name: Settings.routeName),
builder: (context) => Settings(
settingsStore: context.read<SettingsStore>(),
),