import 'dart:async'; import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:relationship_saver/app/presentation/app_shell.dart'; import 'package:relationship_saver/core/config/app_theme.dart'; import 'package:relationship_saver/core/llm/llm_config.dart'; import 'package:relationship_saver/features/ai_digest/application/llm_digest_background_scheduler.dart'; import 'package:relationship_saver/features/ai_digest/presentation/ai_digest_notification_listener.dart'; import 'package:relationship_saver/features/auth/application/session_controller.dart'; import 'package:relationship_saver/features/auth/presentation/sign_in_view.dart'; import 'package:relationship_saver/features/reminders/application/reminder_notification_listener.dart'; import 'package:relationship_saver/features/share_intake/presentation/incoming_share_listener.dart'; import 'package:relationship_saver/features/sync/application/sync_background_runner.dart'; import 'package:relationship_saver/integrations/backend/models/backend_models.dart'; /// Root app widget that wires auth, shell entry, and global listeners. class RelationshipSaverApp extends ConsumerStatefulWidget { const RelationshipSaverApp({super.key}); @override ConsumerState createState() => _RelationshipSaverAppState(); } class _RelationshipSaverAppState extends ConsumerState { @override void initState() { super.initState(); unawaited(ref.read(llmConfigProvider.notifier).initialize()); } @override Widget build(BuildContext context) { final WidgetRef ref = this.ref; final AsyncValue sessionState = ref.watch( sessionControllerProvider, ); return MaterialApp( title: 'Relationship Saver', debugShowCheckedModeBanner: false, theme: AppTheme.light(), home: Scaffold( body: sessionState.when( data: (AuthSession? session) => session == null ? const SignInView() : const IncomingShareListener( child: ReminderNotificationListener( child: AiDigestNotificationListener( child: LlmDigestBackgroundRunner( child: SyncBackgroundRunner(child: AppShell()), ), ), ), ), loading: () => const Center(child: CircularProgressIndicator()), error: (Object error, StackTrace stackTrace) => const SignInView(), ), ), ); } }