From 337664046a8bbc605af89e738cfaa3ea97ee312a Mon Sep 17 00:00:00 2001 From: cogwheel0 <172976095+cogwheel0@users.noreply.github.com> Date: Wed, 26 Nov 2025 19:16:14 +0530 Subject: [PATCH] refactor(auth): migrate to unified auth providers and simplify user retrieval --- lib/features/chat/views/chat_page.dart | 11 ++--- .../navigation/widgets/chats_drawer.dart | 8 +--- .../onboarding/views/onboarding_sheet.dart | 9 +--- lib/features/profile/views/profile_page.dart | 45 ++++++------------- 4 files changed, 24 insertions(+), 49 deletions(-) diff --git a/lib/features/chat/views/chat_page.dart b/lib/features/chat/views/chat_page.dart index 0a39f9b..1f2ce43 100644 --- a/lib/features/chat/views/chat_page.dart +++ b/lib/features/chat/views/chat_page.dart @@ -12,6 +12,7 @@ import '../../../shared/widgets/responsive_drawer_layout.dart'; import '../../navigation/widgets/chats_drawer.dart'; import 'dart:async'; import '../../../core/providers/app_providers.dart'; +import '../../auth/providers/unified_auth_providers.dart'; import '../providers/chat_providers.dart'; import '../../../core/utils/debug_logger.dart'; import '../../../core/utils/user_display_name.dart'; @@ -1122,12 +1123,12 @@ class _ChatPageState extends ConsumerState { Widget _buildEmptyState(ThemeData theme) { final l10n = AppLocalizations.of(context)!; - final currentUserAsync = ref.watch(currentUserProvider); - final userFromProfile = currentUserAsync.maybeWhen( - data: (user) => user, - orElse: () => null, + final authUser = ref.watch(currentUserProvider2); + final asyncUser = ref.watch(currentUserProvider); + final user = asyncUser.maybeWhen( + data: (value) => value ?? authUser, + orElse: () => authUser, ); - final user = userFromProfile; String? greetingName; if (user != null) { final derived = deriveUserDisplayName(user, fallback: '').trim(); diff --git a/lib/features/navigation/widgets/chats_drawer.dart b/lib/features/navigation/widgets/chats_drawer.dart index 4a911e2..cf1fa0a 100644 --- a/lib/features/navigation/widgets/chats_drawer.dart +++ b/lib/features/navigation/widgets/chats_drawer.dart @@ -8,6 +8,7 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:go_router/go_router.dart'; import '../../../core/providers/app_providers.dart'; +import '../../auth/providers/unified_auth_providers.dart'; import '../../../shared/theme/theme_extensions.dart'; import '../../chat/providers/chat_providers.dart' as chat; // import '../../files/views/files_page.dart'; @@ -1477,12 +1478,7 @@ class _ChatsDrawerState extends ConsumerState { Widget _buildBottomSection(BuildContext context) { final theme = context.conduitTheme; final sidebarTheme = context.sidebarTheme; - final currentUserAsync = ref.watch(currentUserProvider); - final userFromProfile = currentUserAsync.maybeWhen( - data: (u) => u, - orElse: () => null, - ); - final user = userFromProfile; + final user = ref.watch(currentUserProvider2); 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 64559f1..e5a5663 100644 --- a/lib/features/onboarding/views/onboarding_sheet.dart +++ b/lib/features/onboarding/views/onboarding_sheet.dart @@ -4,7 +4,7 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_animate/flutter_animate.dart'; import 'package:conduit/l10n/app_localizations.dart'; -import '../../../core/providers/app_providers.dart'; +import '../../auth/providers/unified_auth_providers.dart'; import '../../../core/utils/user_display_name.dart'; import '../../../shared/theme/theme_extensions.dart'; import '../../../shared/widgets/sheet_handle.dart'; @@ -67,12 +67,7 @@ class _OnboardingSheetState extends ConsumerState { Widget build(BuildContext context) { final height = MediaQuery.of(context).size.height; final l10n = AppLocalizations.of(context)!; - final currentUserAsync = ref.watch(currentUserProvider); - final userFromProfile = currentUserAsync.maybeWhen( - data: (user) => user, - orElse: () => null, - ); - final user = userFromProfile; + final user = ref.watch(currentUserProvider2); 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 57aa576..87aa4f3 100644 --- a/lib/features/profile/views/profile_page.dart +++ b/lib/features/profile/views/profile_page.dart @@ -41,40 +41,23 @@ class ProfilePage extends ConsumerWidget { @override Widget build(BuildContext context, WidgetRef ref) { - final user = ref.watch(currentUserProvider); + final user = ref.watch(currentUserProvider2); + final isAuthLoading = ref.watch(isAuthLoadingProvider2); final api = ref.watch(apiServiceProvider); - return ErrorBoundary( - child: user.when( - data: (userData) => _buildScaffold( - context, - body: _buildProfileBody(context, ref, userData, api), + Widget body; + if (isAuthLoading && user == null) { + body = _buildCenteredState( + context, + ImprovedLoadingState( + message: AppLocalizations.of(context)!.loadingProfile, ), - loading: () => _buildScaffold( - context, - body: _buildCenteredState( - context, - ImprovedLoadingState( - message: AppLocalizations.of(context)!.loadingProfile, - ), - ), - ), - error: (error, stack) => _buildScaffold( - context, - body: _buildCenteredState( - context, - ImprovedEmptyState( - title: AppLocalizations.of(context)!.unableToLoadProfile, - subtitle: AppLocalizations.of(context)!.pleaseCheckConnection, - icon: UiUtils.platformIcon( - ios: CupertinoIcons.exclamationmark_triangle, - android: Icons.error_outline, - ), - ), - ), - ), - ), - ); + ); + } else { + body = _buildProfileBody(context, ref, user, api); + } + + return ErrorBoundary(child: _buildScaffold(context, body: body)); } Scaffold _buildScaffold(BuildContext context, {required Widget body}) {