102 lines
3.1 KiB
Dart
102 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 '../../../otpVerification/domain/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="";
|
|
String countryId="";
|
|
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={
|
|
"countryId":event.id,
|
|
"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();
|
|
}
|
|
}
|