import { HttpErrorResponse } from '@angular/common/http';
import { ErrorHandler, Injectable } from '@angular/core';
import { AuthService } from '@core/auth';
import { UiErrorModalComponent, UiModalService } from '@ui/modal';

@Injectable()
export class IsaErrorHandler implements ErrorHandler {
  constructor(private _modal: UiModalService, private _authService: AuthService) {}

  handleError(error: any): void {
    console.error(error);

    // Bei Klick auf Abbrechen auf der Login Seite erneut zur Login Seite weiterleiten
    if (error?.type === 'token_error') {
      this._authService.login();
      return;
    }

    this._modal.open({
      content: UiErrorModalComponent,
      title:
        !navigator.onLine || (error instanceof HttpErrorResponse && error?.status === 0)
          ? 'Sie sind offline, keine Verbindung zum Netzwerk'
          : 'Unbekannter Fehler',
      data: error,
    });
  }
}
