From 0c140580f5df9291c54e1d065f6737749b1384af Mon Sep 17 00:00:00 2001 From: cogwheel0 <172976095+cogwheel0@users.noreply.github.com> Date: Thu, 27 Nov 2025 21:41:32 +0530 Subject: [PATCH] feat(user): improve user data handling with async provider --- lib/features/navigation/widgets/chats_drawer.dart | 7 ++++++- lib/features/onboarding/views/onboarding_sheet.dart | 8 +++++++- lib/features/profile/views/profile_page.dart | 7 ++++++- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/lib/features/navigation/widgets/chats_drawer.dart b/lib/features/navigation/widgets/chats_drawer.dart index cf1fa0a..54c57b9 100644 --- a/lib/features/navigation/widgets/chats_drawer.dart +++ b/lib/features/navigation/widgets/chats_drawer.dart @@ -1478,7 +1478,12 @@ class _ChatsDrawerState extends ConsumerState { Widget _buildBottomSection(BuildContext context) { final theme = context.conduitTheme; final sidebarTheme = context.sidebarTheme; - final user = ref.watch(currentUserProvider2); + final authUser = ref.watch(currentUserProvider2); + final asyncUser = ref.watch(currentUserProvider); + final user = asyncUser.maybeWhen( + data: (value) => value ?? authUser, + orElse: () => authUser, + ); final api = ref.watch(apiServiceProvider); String initialFor(String name) { diff --git a/lib/features/onboarding/views/onboarding_sheet.dart b/lib/features/onboarding/views/onboarding_sheet.dart index e5a5663..124774e 100644 --- a/lib/features/onboarding/views/onboarding_sheet.dart +++ b/lib/features/onboarding/views/onboarding_sheet.dart @@ -5,6 +5,7 @@ import 'package:flutter_animate/flutter_animate.dart'; import 'package:conduit/l10n/app_localizations.dart'; import '../../auth/providers/unified_auth_providers.dart'; +import '../../../core/providers/app_providers.dart'; import '../../../core/utils/user_display_name.dart'; import '../../../shared/theme/theme_extensions.dart'; import '../../../shared/widgets/sheet_handle.dart'; @@ -67,7 +68,12 @@ class _OnboardingSheetState extends ConsumerState { Widget build(BuildContext context) { final height = MediaQuery.of(context).size.height; final l10n = AppLocalizations.of(context)!; - final user = ref.watch(currentUserProvider2); + final authUser = ref.watch(currentUserProvider2); + final asyncUser = ref.watch(currentUserProvider); + final user = asyncUser.maybeWhen( + data: (value) => value ?? authUser, + orElse: () => authUser, + ); final greetingName = deriveUserDisplayName(user); final pages = _buildPages(l10n, greetingName); final pageCount = pages.length; diff --git a/lib/features/profile/views/profile_page.dart b/lib/features/profile/views/profile_page.dart index 87aa4f3..8937bc4 100644 --- a/lib/features/profile/views/profile_page.dart +++ b/lib/features/profile/views/profile_page.dart @@ -41,7 +41,12 @@ class ProfilePage extends ConsumerWidget { @override Widget build(BuildContext context, WidgetRef ref) { - final user = ref.watch(currentUserProvider2); + final authUser = ref.watch(currentUserProvider2); + final asyncUser = ref.watch(currentUserProvider); + final user = asyncUser.maybeWhen( + data: (value) => value ?? authUser, + orElse: () => authUser, + ); final isAuthLoading = ref.watch(isAuthLoadingProvider2); final api = ref.watch(apiServiceProvider);