create visitor password

This commit is contained in:
mohammad
2024-08-19 09:49:58 +03:00
parent 869a10f92c
commit 753aa29a8a
3 changed files with 60 additions and 21 deletions

View File

@ -73,7 +73,7 @@ class AuthBloc extends Bloc<AuthEvent, AuthState> {
ChangePasswordEvent event, Emitter<AuthState> emit) async { ChangePasswordEvent event, Emitter<AuthState> emit) async {
try { try {
emit(LoadingForgetState()); emit(LoadingForgetState());
bool response = await AuthenticationAPI.verifyOtp( var response = await AuthenticationAPI.verifyOtp(
email: forgetEmailController.text, otpCode: forgetOtp.text); email: forgetEmailController.text, otpCode: forgetOtp.text);
if (response == true) { if (response == true) {
await AuthenticationAPI.forgetPassword( await AuthenticationAPI.forgetPassword(
@ -81,8 +81,11 @@ class AuthBloc extends Bloc<AuthEvent, AuthState> {
email: forgetEmailController.text); email: forgetEmailController.text);
_timer?.cancel(); _timer?.cancel();
emit(const TimerState(isButtonEnabled: true, remainingTime: 0)); emit(const TimerState(isButtonEnabled: true, remainingTime: 0));
}
emit(SuccessForgetState()); emit(SuccessForgetState());
} else if (response == "You entered wrong otp") {
forgetValidate = response; // Set the validation message
emit(AuthInitialState());
}
} catch (failure) { } catch (failure) {
forgetValidate='Invalid Credentials!'; forgetValidate='Invalid Credentials!';
emit(AuthInitialState()); emit(AuthInitialState());
@ -91,6 +94,13 @@ class AuthBloc extends Bloc<AuthEvent, AuthState> {
} }
} }
String? validateCode(String? value) {
if (value == null || value.isEmpty) {
return 'Code is required';
}
return null;
}
void _onUpdateTimer(UpdateTimerEvent event, Emitter<AuthState> emit) { void _onUpdateTimer(UpdateTimerEvent event, Emitter<AuthState> emit) {
emit(TimerState( emit(TimerState(
isButtonEnabled: event.isButtonEnabled, isButtonEnabled: event.isButtonEnabled,
@ -196,6 +206,7 @@ class AuthBloc extends Bloc<AuthEvent, AuthState> {
validate=''; validate='';
return null; return null;
} }
String? loginValidateEmail(String? value) { String? loginValidateEmail(String? value) {
if (!RegExp(r'^[^@]+@[^@]+\.[^@]+').hasMatch(value!)) { if (!RegExp(r'^[^@]+@[^@]+\.[^@]+').hasMatch(value!)) {
return ''; return '';
@ -203,12 +214,7 @@ class AuthBloc extends Bloc<AuthEvent, AuthState> {
return null; return null;
} }
String? validateCode(String? value) {
if (value == null || value.isEmpty) {
return 'Code is required';
}
return null;
}
bool _validateInputs(Emitter<AuthState> emit) { bool _validateInputs(Emitter<AuthState> emit) {
emit(LoadingForgetState()); emit(LoadingForgetState());

View File

@ -21,6 +21,11 @@ class ForgetPasswordWebPage extends StatelessWidget {
child: BlocConsumer<AuthBloc, AuthState>( child: BlocConsumer<AuthBloc, AuthState>(
listener: (context, state) { listener: (context, state) {
if (state is SuccessForgetState) { if (state is SuccessForgetState) {
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(
content: Text('Change Password Successfully '),
),
);
Navigator.of(context).pop(); Navigator.of(context).pop();
} else if (state is FailureForgetState) { } else if (state is FailureForgetState) {
ScaffoldMessenger.of(context).showSnackBar( ScaffoldMessenger.of(context).showSnackBar(
@ -242,6 +247,17 @@ class ForgetPasswordWebPage extends StatelessWidget {
const TextStyle(color: Colors.black), const TextStyle(color: Colors.black),
), ),
), ),
if (forgetBloc.forgetValidate != '') // Check if there is a validation message
Padding(
padding: const EdgeInsets.only(top: 8.0),
child: Text(
forgetBloc.forgetValidate,
style: const TextStyle(
color: ColorsManager.red,
fontSize: 12,
),
),
),
], ],
), ),
const SizedBox(height: 20.0), const SizedBox(height: 20.0),

View File

@ -79,13 +79,16 @@ class AuthenticationAPI {
} }
} }
static Future<bool> verifyOtp( static Future verifyOtp(
{required String email, required String otpCode}) async { {required String email, required String otpCode}) async {
try{
final response = await HTTPService().post( final response = await HTTPService().post(
path: ApiEndpoints.verifyOtp, path: ApiEndpoints.verifyOtp,
body: {"email": email, "type": "PASSWORD", "otpCode": otpCode}, body: {"email": email, "type": "PASSWORD", "otpCode": otpCode},
showServerMessage: true, showServerMessage: true,
expectedResponseModel: (json) { expectedResponseModel: (json) {
print('json=$json');
if (json['message'] == 'Otp Verified Successfully') { if (json['message'] == 'Otp Verified Successfully') {
return true; return true;
} else { } else {
@ -93,6 +96,20 @@ class AuthenticationAPI {
} }
}); });
return response; return response;
}on DioException catch (e){
if (e.response != null) {
if (e.response!.statusCode == 400) {
// Handle 400 Bad Request
final errorData = e.response!.data;
String errorMessage = errorData['message'];
debugPrint('Unexpected Error: $errorMessage');
return errorMessage;
}
} else {
debugPrint('Error: ${e.message}');
}
}
} }
static Future<List<RegionModel>> fetchRegion() async { static Future<List<RegionModel>> fetchRegion() async {