import 'package:fpdart/fpdart.dart'; import '../../../../core/errors/failures.dart'; import '../../../../shared/domain/usecases/usecase.dart'; import '../entities/user.dart'; import '../repositories/auth_repository.dart'; class LoginParams { final String email; final String password; const LoginParams({ required this.email, required this.password, }); } class LoginUseCase implements UseCase { final AuthRepository repository; LoginUseCase(this.repository); @override Future> call(LoginParams params) async { // Validate email format if (!_isValidEmail(params.email)) { return Left(ValidationFailure('Invalid email format')); } // Validate password if (params.password.length < 6) { return Left(ValidationFailure('Password must be at least 6 characters')); } return repository.login( email: params.email, password: params.password, ); } bool _isValidEmail(String email) { return RegExp(r'^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$').hasMatch(email); } }