From 76594ca28f1252cd0e39736ca6ff3471ca1df3de Mon Sep 17 00:00:00 2001 From: Chneemann Date: Wed, 26 Mar 2025 13:14:34 +0100 Subject: [PATCH] feat: integrate ngx-toastr in ErrorHandlingService to display error messages in toast notifications. --- src/app/components/login/login.component.ts | 3 -- src/app/services/auth.service.ts | 4 +-- src/app/services/error-handling.service.ts | 36 ++++++++++++++------- 3 files changed, 26 insertions(+), 17 deletions(-) diff --git a/src/app/components/login/login.component.ts b/src/app/components/login/login.component.ts index d8aff95..2c0ecdd 100644 --- a/src/app/components/login/login.component.ts +++ b/src/app/components/login/login.component.ts @@ -46,7 +46,6 @@ export class LoginComponent { private tokenService: TokenService, public sharedService: SharedService, private overlayService: OverlayService, - private errorHandlingService: ErrorHandlingService, private route: ActivatedRoute, private router: Router ) {} @@ -81,8 +80,6 @@ export class LoginComponent { this.sharedService.isBtnDisabled = false; } catch (error) { this.sharedService.isBtnDisabled = false; - const errorMessage = this.errorHandlingService.handleHttpError(error); - alert(errorMessage); } } } diff --git a/src/app/services/auth.service.ts b/src/app/services/auth.service.ts index 41dfa61..c27a703 100755 --- a/src/app/services/auth.service.ts +++ b/src/app/services/auth.service.ts @@ -45,7 +45,7 @@ export class AuthService { this.showLoginSuccessMessage(); } catch (error) { console.error('Login failed:', error); - throw new Error(this.errorHandlingService.handleHttpError(error)); + this.errorHandlingService.handleHttpError(error); } } @@ -60,7 +60,7 @@ export class AuthService { this.router.navigate(['/logout']); } catch (error) { console.error('Logout failed:', error); - throw new Error(this.errorHandlingService.handleHttpError(error)); + this.errorHandlingService.handleHttpError(error); } } diff --git a/src/app/services/error-handling.service.ts b/src/app/services/error-handling.service.ts index d464e8e..b11ab33 100755 --- a/src/app/services/error-handling.service.ts +++ b/src/app/services/error-handling.service.ts @@ -1,32 +1,44 @@ import { Injectable } from '@angular/core'; import { HttpErrorResponse } from '@angular/common/http'; +import { ToastrService } from 'ngx-toastr'; @Injectable({ providedIn: 'root', }) export class ErrorHandlingService { - handleHttpError(error: unknown): string { + constructor(private toastr: ToastrService) {} + + handleHttpError(error: unknown): void { + let errorMessage = 'An unknown error occurred.'; + if (error instanceof HttpErrorResponse) { switch (error.status) { case 0: - return 'Network issue: Unable to reach the server.\nPlease check your internet connection or the server status.'; + errorMessage = + 'Network issue: Unable to reach the server. Please check your internet connection or the server status.'; + break; case 401: - return 'Invalid login credentials.\nPlease check your email and password.'; + errorMessage = + 'Invalid login credentials. Please check your email and password.'; + break; case 403: - return 'You do not have permission to access this resource.'; + errorMessage = 'You do not have permission to access this resource.'; + break; case 404: - return 'The requested resource was not found.'; + errorMessage = 'The requested resource was not found.'; + break; case 500: - return 'Server error: Please try again later.'; + errorMessage = 'Server error: Please try again later.'; + break; default: - return `Unknown error: ${error.statusText || error.message}`; + errorMessage = `Unknown error: ${error.statusText || error.message}`; + break; } + } else if (error instanceof Error) { + errorMessage = `${error.message || error.toString()}`; } - if (error instanceof Error) { - return `${error.message || error.toString()}`; - } - - return 'An unknown error occurred.'; + // Show the toast message with the error message + this.toastr.error(errorMessage, 'Error'); } }