import 'package:dartz/dartz.dart';
import '../../../services/auth_service.dart';
import '../../../data/models/user/user_dto.dart';
import '../../../core/errors/failures.dart';
import '../base_usecase.dart';

/// 현재 로그인한 사용자 정보 조회 UseCase
class GetCurrentUserUseCase extends UseCase<UserDto?, NoParams> {
  final AuthService _authService;

  GetCurrentUserUseCase(this._authService);

  @override
  Future<Either<Failure, UserDto?>> call(NoParams params) async {
    try {
      final user = await _authService.getCurrentUser();
      
      if (user == null) {
        return Left(AuthFailure(
          message: '로그인이 필요합니다.',
          code: 'NOT_AUTHENTICATED',
        ));
      }
      
      // AuthUser를 UserDto로 변환 (임시로 null 반환)
      return const Right(null);
    } catch (e) {
      return Left(UnknownFailure(
        message: '사용자 정보를 가져오는 중 오류가 발생했습니다.',
        originalError: e,
      ));
    }
  }
}