diff --git a/lib/features/auth/presentation/screens/login_screen.dart b/lib/features/auth/presentation/screens/login_screen.dart index f65e6b5..ea8d2f7 100644 --- a/lib/features/auth/presentation/screens/login_screen.dart +++ b/lib/features/auth/presentation/screens/login_screen.dart @@ -65,7 +65,10 @@ class _LoginScreenState extends ConsumerState { // Navigate on auth state changes ref.listen(authProvider, (previous, next) { if (next.status == AuthStatus.authenticated) { - context.go('/home'); + // 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'); } // 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 61e7422..b59e3ed 100644 --- a/lib/features/auth/presentation/screens/verify_2fa_screen.dart +++ b/lib/features/auth/presentation/screens/verify_2fa_screen.dart @@ -95,10 +95,12 @@ class _Verify2faScreenState extends ConsumerState { final authState = ref.watch(authProvider); final isLoading = authState.status == AuthStatus.loading; - // Navigate to home when authentication succeeds, reset submit lock on error. + // Navigate when authentication succeeds, reset submit lock on error. + // Agents land on /profile (Edit Profile tab — their home/dashboard view). ref.listen(authProvider, (previous, next) { if (next.status == AuthStatus.authenticated) { - context.go('/home'); + final isAgent = next.user?.role == 'AGENT'; + context.go(isAgent ? '/profile' : '/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 954b8dd..0fb9608 100644 --- a/lib/features/splash/presentation/screens/splash_screen.dart +++ b/lib/features/splash/presentation/screens/splash_screen.dart @@ -1,18 +1,20 @@ 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 StatefulWidget { +class SplashScreen extends ConsumerStatefulWidget { const SplashScreen({super.key}); @override - State createState() => _SplashScreenState(); + ConsumerState createState() => _SplashScreenState(); } -class _SplashScreenState extends State +class _SplashScreenState extends ConsumerState with SingleTickerProviderStateMixin { late final AnimationController _controller; late final Animation _fadeAnimation; @@ -43,11 +45,15 @@ class _SplashScreenState extends State final onboardingCompleted = prefs.getBool('onboarding_completed') ?? false; if (!mounted) return; - if (onboardingCompleted) { - context.go('/home'); - } else { + if (!onboardingCompleted) { 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