import 'package:flutter_bloc/flutter_bloc.dart'; import '../../domain/usecases/send_otp.dart'; import '../../domain/usecases/verify_otp.dart'; part 'auth_event.dart'; part 'auth_state.dart'; class AuthBloc extends Bloc { final SendOTP sendOTPUseCase; final VerifyOTP verifyOTPUseCase; String _timeStamp = ""; String _timeDue = ""; String get timeStamp => _timeStamp; String get timeDue => _timeDue; AuthBloc({ required this.sendOTPUseCase, required this.verifyOTPUseCase, }) : super(AuthInitial()) { on(_onSendOTP); on(_onVerifyOTP); } Future _onSendOTP(SendOTPEvent event, Emitter emit) async { emit(AuthLoading()); final result = await sendOTPUseCase(SendOTPParams(phoneNumber: event.phoneNumber)); if (result.isSuccess && result.data != null) { _timeStamp = result.data!.timeStamp; _timeDue = result.data!.timeDue; emit(AuthSuccess( phoneNumber: event.phoneNumber, timeStamp: _timeStamp, timeDue: _timeDue, )); } else { emit(AuthError('خطا در ارسال کد. لطفاً دوباره تلاش کنید.')); } } Future _onVerifyOTP(VerifyOTPEvent event, Emitter emit) async { emit(AuthLoading()); final result = await verifyOTPUseCase(VerifyOTPParams( otpCode: event.otpCode, phoneNumber: event.phoneNumber, )); if (result.isSuccess && result.data == true) { emit(OTPVerified()); } else { emit(AuthError('کد وارد شده نادرست است. لطفاً دوباره تلاش کنید.')); } } }