From 019df719fce4ee99040db50ade42098aee225f05 Mon Sep 17 00:00:00 2001 From: pradeepkumar Date: Wed, 6 May 2026 14:59:38 +0530 Subject: [PATCH] refactor: unify app navigation to default to HomeScreen and remove role-based routing redirection --- .../presentation/screens/login_screen.dart | 5 +---- .../screens/verify_2fa_screen.dart | 6 ++---- .../presentation/screens/splash_screen.dart | 18 ++++++------------ lib/routing/app_router.dart | 9 ++------- 4 files changed, 11 insertions(+), 27 deletions(-) diff --git a/lib/features/auth/presentation/screens/login_screen.dart b/lib/features/auth/presentation/screens/login_screen.dart index ea8d2f7..f65e6b5 100644 --- a/lib/features/auth/presentation/screens/login_screen.dart +++ b/lib/features/auth/presentation/screens/login_screen.dart @@ -65,10 +65,7 @@ class _LoginScreenState extends ConsumerState { // Navigate on auth state changes ref.listen(authProvider, (previous, next) { if (next.status == AuthStatus.authenticated) { - // Agents land on /profile (defaults to "Edit Profile" tab — - // their dashboard/home view). Users land on /home. - final isAgent = next.user?.role == 'AGENT'; - context.go(isAgent ? '/profile' : '/home'); + context.go('/home'); } // Navigate to 2FA verification screen if (next.requiresTwoFactor && next.tempToken != null) { diff --git a/lib/features/auth/presentation/screens/verify_2fa_screen.dart b/lib/features/auth/presentation/screens/verify_2fa_screen.dart index b59e3ed..61e7422 100644 --- a/lib/features/auth/presentation/screens/verify_2fa_screen.dart +++ b/lib/features/auth/presentation/screens/verify_2fa_screen.dart @@ -95,12 +95,10 @@ class _Verify2faScreenState extends ConsumerState { final authState = ref.watch(authProvider); final isLoading = authState.status == AuthStatus.loading; - // Navigate when authentication succeeds, reset submit lock on error. - // Agents land on /profile (Edit Profile tab — their home/dashboard view). + // Navigate to home when authentication succeeds, reset submit lock on error. ref.listen(authProvider, (previous, next) { if (next.status == AuthStatus.authenticated) { - final isAgent = next.user?.role == 'AGENT'; - context.go(isAgent ? '/profile' : '/home'); + context.go('/home'); } if (next.status != AuthStatus.loading) { _isSubmitting = false; diff --git a/lib/features/splash/presentation/screens/splash_screen.dart b/lib/features/splash/presentation/screens/splash_screen.dart index 0fb9608..954b8dd 100644 --- a/lib/features/splash/presentation/screens/splash_screen.dart +++ b/lib/features/splash/presentation/screens/splash_screen.dart @@ -1,20 +1,18 @@ import 'dart:async'; import 'package:flutter/material.dart'; -import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:go_router/go_router.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:real_estate_mobile/core/constants/app_colors.dart'; -import 'package:real_estate_mobile/features/auth/presentation/providers/auth_provider.dart'; -class SplashScreen extends ConsumerStatefulWidget { +class SplashScreen extends StatefulWidget { const SplashScreen({super.key}); @override - ConsumerState createState() => _SplashScreenState(); + State createState() => _SplashScreenState(); } -class _SplashScreenState extends ConsumerState +class _SplashScreenState extends State with SingleTickerProviderStateMixin { late final AnimationController _controller; late final Animation _fadeAnimation; @@ -45,15 +43,11 @@ class _SplashScreenState extends ConsumerState final onboardingCompleted = prefs.getBool('onboarding_completed') ?? false; if (!mounted) return; - if (!onboardingCompleted) { + if (onboardingCompleted) { + context.go('/home'); + } else { context.go('/onboarding'); - return; } - // Agents land on /profile (Edit Profile tab); everyone else on /home. - final authState = ref.read(authProvider); - final isAgent = authState.status == AuthStatus.authenticated && - authState.user?.role == 'AGENT'; - context.go(isAgent ? '/profile' : '/home'); } @override diff --git a/lib/routing/app_router.dart b/lib/routing/app_router.dart index 663c36a..cc0f941 100644 --- a/lib/routing/app_router.dart +++ b/lib/routing/app_router.dart @@ -23,7 +23,6 @@ import 'package:real_estate_mobile/features/agents/presentation/screens/agent_ed import 'package:real_estate_mobile/features/profile/presentation/screens/payment_success_screen.dart'; import 'package:real_estate_mobile/features/splash/presentation/screens/splash_screen.dart'; import 'package:real_estate_mobile/features/onboarding/presentation/screens/onboarding_screen.dart'; -import 'package:real_estate_mobile/features/agents/presentation/screens/agent_home_screen.dart'; import 'package:real_estate_mobile/features/auth/presentation/screens/verify_2fa_screen.dart'; import 'package:real_estate_mobile/features/support_chat/presentation/screens/support_chat_screen.dart'; import 'package:real_estate_mobile/features/coming_soon/presentation/screens/coming_soon_screen.dart'; @@ -289,8 +288,8 @@ final routerProvider = Provider((ref) { ); }); -/// Reactively switches between HomeScreen and AgentHomeScreen based on auth. -/// Agents see their dashboard (profile view); users see the discovery home. +/// Always shows the user HomeScreen for /home regardless of role. +/// Agents reach their own dashboard via the Edit Profile tab in /profile. class _HomeRouteWrapper extends ConsumerWidget { const _HomeRouteWrapper(); @@ -307,10 +306,6 @@ class _HomeRouteWrapper extends ConsumerWidget { ); } - if (authState.status == AuthStatus.authenticated && - authState.user?.role == 'AGENT') { - return const AgentHomeScreen(); - } return const HomeScreen(); } }