Files
Tanami_App/lib/features/register/presentation/bloc/register_bloc.dart
poojapandeyx acf7f8980f otp flow
2024-07-11 19:36:40 +05:30

100 lines
3.1 KiB
Dart

import 'package:bloc/bloc.dart';
import 'package:flutter/material.dart';
import '../../../../Api_Helper/base_manager.dart';
import '../../../../Globalconst.dart';
import '../../../OTP/Repository/OTP_API.dart';
import 'register_event.dart';
import 'register_state.dart';
class RegisterBloc extends Bloc<RegisterEvent, RegisterState> {
final GlobalKey<FormState> formKey = GlobalKey<FormState>();
final TextEditingController countrySelectionTextField =
TextEditingController();
String isdcode="";
final TextEditingController phoneNumberTextField = TextEditingController();
GlobalKey<FormState> getFormKey() {
return formKey;
}
RegisterBloc() : super(RegisterInitial()) {
phoneNumberTextField.addListener(_onFormFieldChanged);
countrySelectionTextField.addListener(_onFormFieldChanged);
on<RegisterFormChanged>(_onLoginFormChanged);
on<RegisterSubmitted>((event, emit) async {
if (!formKey.currentState!.validate()) {
return;
}
emit(RegisterLoading());
try {
Map<String,dynamic> requestdata={
"isdCode":event.isdcode,
"phoneNumber":event.phoneNumber
};
ResponseData response = await OTPAPI().RequestOTP(requestdata);
if (response.status == ResponseStatus.SUCCESS) {
print("///////success");
var data=response.data["data"];
String token=data["token"];
Globalconst.token=token;
emit(RegisterSuccess(token));//emit(OTPLoaded());
} else {
emit(const RegisterFailure(
"Register failed. Please check your credentials."));
//emit(OTPFailed("Oops something went wrong"));
}
} catch (e) {
emit(RegisterFailure(e.toString()));
}
});
on<Resendotp>((event, emit) async {
emit(RegisterLoading());
try {
Map<String,dynamic> requestdata={
"token":Globalconst.token,
};
ResponseData response = await OTPAPI().ResendOTPRequest(requestdata);
if (response.status == ResponseStatus.SUCCESS) {
emit(RegisterSuccess(event.token));//emit(OTPLoaded());
} else {
emit(const RegisterFailure(
"Register failed. Please check your credentials."));
//emit(OTPFailed("Oops something went wrong"));
}
} catch (e) {
emit(RegisterFailure(e.toString()));
}
});
}
void _onFormFieldChanged() {
add(RegisterFormChanged(
phoneNumberTextField.text,
countrySelectionTextField.text,
));
}
void _onLoginFormChanged(
RegisterFormChanged event, Emitter<RegisterState> emit) {
final areFieldsFilled =
event.phoneNumber.isNotEmpty && event.country.isNotEmpty;
emit(RegisterFieldsState(areFieldsFilled));
}
// Mock API function, replace with actual API call
Future<bool> _mockLoginApi(
String phoneNumber,
String countryResidence,
) async {
return true;
}
@override
Future<void> close() {
phoneNumberTextField.dispose();
countrySelectionTextField.dispose();
return super.close();
}
}