Newer
Older
import { MatSnackBar } from '@angular/material/snack-bar';
import { Injectable, Component, Inject } from '@angular/core';
import { MAT_SNACK_BAR_DATA } from '@angular/material/snack-bar';
import { Router } from '@angular/router';
@Component({
selector: 'custom-snackbar',
template: '<mat-grid-list cols="4" rowHeight="1:1"><mat-grid-tile colspan="1"><mat-icon class="fa fa-{{data.icon}} fa-2x"></mat-icon></mat-grid-tile><mat-grid-tile colspan="3">{{data.message}}</mat-grid-tile></mat-grid-list>' // You may also use a HTML file
})
export class CustomSnackbarComponent {
constructor(@Inject(MAT_SNACK_BAR_DATA) public data: any) { }
}
@Injectable()
export class NotificationService {
constructor(private router: Router, public snackBar: MatSnackBar) {
success(message: string) {
this.snackBar.openFromComponent(CustomSnackbarComponent, {
duration: 2000,
data: { message: message, icon: 'info-circle' }
});
error(message: string) {
this.snackBar.openFromComponent(CustomSnackbarComponent, {
duration: 2000,
data: { message: message, icon: 'exclamation-triangle' }
});
handleErrors(err: any) {
console.log(err);
if (err.status === 401 && this.router.url !== '/home') {
this.router.navigate(['/home']);
} else if (err.status === 0 && err.statusText === 'Unknown Error') {
if (err.error !== undefined) {
if (err.error.errors !== undefined) {
this.error(err.error.errors);
if (err.status === 403 || err.status === 404) {
this.router.navigate(['/home']);
}
} else if (err.error.exception !== undefined) {
this.error(err.error.exception[0].message);
} else if(err.error.error !== undefined){
this.error(err.error.error.message);
} else {
this.error(err.status + ' : ' + err.statusText);
this.error(err);