refactor(auth): migrate to unified auth providers and simplify user retrieval

This commit is contained in:
cogwheel0
2025-11-26 19:16:14 +05:30
parent 44d1cc99b4
commit 337664046a
4 changed files with 24 additions and 49 deletions

View File

@@ -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<ChatPage> {
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();

View File

@@ -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<ChatsDrawer> {
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) {

View File

@@ -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<OnboardingSheet> {
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;

View File

@@ -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),
),
loading: () => _buildScaffold(
context,
body: _buildCenteredState(
Widget body;
if (isAuthLoading && user == null) {
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}) {