diff --git a/lib/pages/auth/bloc/auth_bloc.dart b/lib/pages/auth/bloc/auth_bloc.dart index 0761ae19..a4b9ec68 100644 --- a/lib/pages/auth/bloc/auth_bloc.dart +++ b/lib/pages/auth/bloc/auth_bloc.dart @@ -73,7 +73,7 @@ class AuthBloc extends Bloc { ChangePasswordEvent event, Emitter emit) async { try { emit(LoadingForgetState()); - bool response = await AuthenticationAPI.verifyOtp( + var response = await AuthenticationAPI.verifyOtp( email: forgetEmailController.text, otpCode: forgetOtp.text); if (response == true) { await AuthenticationAPI.forgetPassword( @@ -81,8 +81,11 @@ class AuthBloc extends Bloc { email: forgetEmailController.text); _timer?.cancel(); emit(const TimerState(isButtonEnabled: true, remainingTime: 0)); + emit(SuccessForgetState()); + } else if (response == "You entered wrong otp") { + forgetValidate = response; // Set the validation message + emit(AuthInitialState()); } - emit(SuccessForgetState()); } catch (failure) { forgetValidate='Invalid Credentials!'; emit(AuthInitialState()); @@ -91,6 +94,13 @@ class AuthBloc extends Bloc { } } + String? validateCode(String? value) { + if (value == null || value.isEmpty) { + return 'Code is required'; + } + return null; + } + void _onUpdateTimer(UpdateTimerEvent event, Emitter emit) { emit(TimerState( isButtonEnabled: event.isButtonEnabled, @@ -196,6 +206,7 @@ class AuthBloc extends Bloc { validate=''; return null; } + String? loginValidateEmail(String? value) { if (!RegExp(r'^[^@]+@[^@]+\.[^@]+').hasMatch(value!)) { return ''; @@ -203,12 +214,7 @@ class AuthBloc extends Bloc { return null; } - String? validateCode(String? value) { - if (value == null || value.isEmpty) { - return 'Code is required'; - } - return null; - } + bool _validateInputs(Emitter emit) { emit(LoadingForgetState()); diff --git a/lib/pages/auth/view/forget_password_web_page.dart b/lib/pages/auth/view/forget_password_web_page.dart index 5b97684c..1b65423a 100644 --- a/lib/pages/auth/view/forget_password_web_page.dart +++ b/lib/pages/auth/view/forget_password_web_page.dart @@ -21,6 +21,11 @@ class ForgetPasswordWebPage extends StatelessWidget { child: BlocConsumer( listener: (context, state) { if (state is SuccessForgetState) { + ScaffoldMessenger.of(context).showSnackBar( + const SnackBar( + content: Text('Change Password Successfully '), + ), + ); Navigator.of(context).pop(); } else if (state is FailureForgetState) { ScaffoldMessenger.of(context).showSnackBar( @@ -242,6 +247,17 @@ class ForgetPasswordWebPage extends StatelessWidget { 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), diff --git a/lib/services/auth_api.dart b/lib/services/auth_api.dart index 0942b47b..55584055 100644 --- a/lib/services/auth_api.dart +++ b/lib/services/auth_api.dart @@ -79,20 +79,37 @@ class AuthenticationAPI { } } - static Future verifyOtp( + static Future verifyOtp( {required String email, required String otpCode}) async { - final response = await HTTPService().post( - path: ApiEndpoints.verifyOtp, - body: {"email": email, "type": "PASSWORD", "otpCode": otpCode}, - showServerMessage: true, - expectedResponseModel: (json) { - if (json['message'] == 'Otp Verified Successfully') { - return true; - } else { - return false; - } - }); - return response; + try{ + final response = await HTTPService().post( + path: ApiEndpoints.verifyOtp, + body: {"email": email, "type": "PASSWORD", "otpCode": otpCode}, + showServerMessage: true, + expectedResponseModel: (json) { + print('json=$json'); + + if (json['message'] == 'Otp Verified Successfully') { + return true; + } else { + return false; + } + }); + 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> fetchRegion() async {