diff --git a/lib/core/providers/app_startup_providers.dart b/lib/core/providers/app_startup_providers.dart index 2d7dbbe..aecdd7b 100644 --- a/lib/core/providers/app_startup_providers.dart +++ b/lib/core/providers/app_startup_providers.dart @@ -14,6 +14,7 @@ import '../services/background_streaming_handler.dart'; import '../services/persistent_streaming_service.dart'; import '../services/socket_service.dart'; import '../../features/onboarding/views/onboarding_sheet.dart'; +import '../../features/chat/providers/chat_providers.dart'; import '../../shared/theme/theme_extensions.dart'; import '../services/connectivity_service.dart'; import '../utils/debug_logger.dart'; @@ -534,8 +535,16 @@ Future _maybeShowOnboarding(Ref ref) async { final navContext = NavigationService.navigatorKey.currentContext; if (navContext == null) return; + try { + ref.read(composerAutofocusEnabledProvider.notifier).set(false); + } catch (_) {} + try { + FocusManager.instance.primaryFocus?.unfocus(); + SystemChannels.textInput.invokeMethod('TextInput.hide'); + } catch (_) {} + // Show onboarding sheet - showModalBottomSheet( + final sheetFuture = showModalBottomSheet( context: navContext, backgroundColor: Colors.transparent, isScrollControlled: true, @@ -550,6 +559,11 @@ Future _maybeShowOnboarding(Ref ref) async { child: const OnboardingSheet(), ), ); + sheetFuture.whenComplete(() { + try { + ref.read(composerAutofocusEnabledProvider.notifier).set(true); + } catch (_) {} + }); await storage.setOnboardingSeen(true); }); diff --git a/lib/features/chat/views/chat_page.dart b/lib/features/chat/views/chat_page.dart index 4043f48..e51f922 100644 --- a/lib/features/chat/views/chat_page.dart +++ b/lib/features/chat/views/chat_page.dart @@ -190,6 +190,14 @@ class _ChatPageState extends ConsumerState { } void _showOnboarding() { + try { + ref.read(composerAutofocusEnabledProvider.notifier).set(false); + } catch (_) {} + try { + FocusManager.instance.primaryFocus?.unfocus(); + SystemChannels.textInput.invokeMethod('TextInput.hide'); + } catch (_) {} + showModalBottomSheet( context: context, backgroundColor: Colors.transparent, @@ -204,7 +212,12 @@ class _ChatPageState extends ConsumerState { ), child: const OnboardingSheet(), ), - ); + ).whenComplete(() { + if (!mounted) return; + try { + ref.read(composerAutofocusEnabledProvider.notifier).set(true); + } catch (_) {} + }); } Future _checkAndLoadDemoConversation() async { diff --git a/lib/shared/theme/theme_extensions.dart b/lib/shared/theme/theme_extensions.dart index 2b42c00..0c66c1d 100644 --- a/lib/shared/theme/theme_extensions.dart +++ b/lib/shared/theme/theme_extensions.dart @@ -62,7 +62,7 @@ class ConduitThemeExtension extends ThemeExtension { Color get inputBorderFocused => surfaces.ring; Color get inputText => tokens.neutralOnSurface; Color get inputPlaceholder => - isDark ? tokens.neutralTone80 : tokens.neutralTone60; + isDark ? tokens.neutralTone60 : tokens.neutralTone60; Color get inputError => tokens.statusError60; Color get cardBackground => surfaces.card;