]> git.proxmox.com Git - ceph.git/blob - ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/services/js-error-handler.service.ts
update ceph source to reef 18.2.0
[ceph.git] / ceph / src / pybind / mgr / dashboard / frontend / src / app / shared / services / js-error-handler.service.ts
1 import { ErrorHandler, Injectable, Injector } from '@angular/core';
2 import { Router } from '@angular/router';
3
4 import { DashboardError } from '~/app/core/error/error';
5 import { LoggingService } from '../api/logging.service';
6
7 @Injectable()
8 export class JsErrorHandler implements ErrorHandler {
9 constructor(private injector: Injector, private router: Router) {}
10
11 handleError(error: any) {
12 const loggingService = this.injector.get(LoggingService);
13 const url = window.location.href;
14 const message = error && error.message;
15 const stack = error && error.stack;
16 loggingService.jsError(url, message, stack).subscribe();
17 if (error.rejection instanceof DashboardError) {
18 setTimeout(
19 () =>
20 this.router.navigate(['error'], {
21 state: {
22 message: error.rejection.message,
23 header: error.rejection.header,
24 icon: error.rejection.icon
25 }
26 }),
27 50
28 );
29 } else {
30 throw error;
31 }
32 }
33 }