From 836c4c03b33bdc6ef645e7afbeb23f58c7513153 Mon Sep 17 00:00:00 2001 From: Blair Vanderlugt Date: Fri, 23 Apr 2021 20:54:40 -0700 Subject: [PATCH] add logging and http error intercept back --- src/app/_eth/registry.ts | 9 +++- src/app/_interceptors/error.interceptor.ts | 48 ++++++++++---------- src/app/_interceptors/logging.interceptor.ts | 28 ++++++------ src/app/pages/accounts/accounts.component.ts | 4 +- 4 files changed, 49 insertions(+), 40 deletions(-) diff --git a/src/app/_eth/registry.ts b/src/app/_eth/registry.ts index 451506e..3ee136a 100644 --- a/src/app/_eth/registry.ts +++ b/src/app/_eth/registry.ts @@ -1,6 +1,7 @@ // @ts-ignore import * as registry from '@src/assets/js/block-sync/data/Registry.json'; import {environment} from '@src/environments/environment'; +import {LoggingService} from '@app/_services/logging.service'; const Web3 = require('web3'); const web3 = new Web3(environment.web3Provider); @@ -27,6 +28,12 @@ export class Registry { public async addressOf(identifier: string): Promise { const id = '0x' + web3.utils.padRight(new Buffer(identifier).toString('hex'), 64); - return await this.contract.methods.addressOf(id).call(); + try { + return await this.contract.methods.addressOf(id).call(); + } catch (error) { + // TODO logger service + // this.loggingService.sendInfoLevelMessage + console.log('Unable to fetch addressOf', error) + } } } diff --git a/src/app/_interceptors/error.interceptor.ts b/src/app/_interceptors/error.interceptor.ts index 0db8af9..69819fd 100644 --- a/src/app/_interceptors/error.interceptor.ts +++ b/src/app/_interceptors/error.interceptor.ts @@ -20,30 +20,30 @@ export class ErrorInterceptor implements HttpInterceptor { ) {} intercept(request: HttpRequest, next: HttpHandler): Observable> { - // return next.handle(request).pipe( - // catchError((err: HttpErrorResponse) => { - // let errorMessage; - // if (err.error instanceof ErrorEvent) { - // // A client-side or network error occurred. Handle it accordingly. - // errorMessage = `An error occurred: ${err.error.message}`; - // } else { - // // The backend returned an unsuccessful response code. - // // The response body may contain clues as to what went wrong. - // errorMessage = `Backend returned code ${err.status}, body was: ${JSON.stringify(err.error)}`; - // } - // this.loggingService.sendErrorLevelMessage(errorMessage, this, {error: err}); - // switch (err.status) { - // case 401: // unauthorized - // this.router.navigateByUrl('/auth').then(); - // break; - // case 403: // forbidden - // location.reload(true); - // break; - // } - // // Return an observable with a user-facing error message. - // return throwError(err); - // }) - // ); + return next.handle(request).pipe( + catchError((err: HttpErrorResponse) => { + let errorMessage; + if (err.error instanceof ErrorEvent) { + // A client-side or network error occurred. Handle it accordingly. + errorMessage = `An error occurred: ${err.error.message}`; + } else { + // The backend returned an unsuccessful response code. + // The response body may contain clues as to what went wrong. + errorMessage = `Backend returned code ${err.status}, body was: ${JSON.stringify(err.error)}`; + } + this.loggingService.sendErrorLevelMessage(errorMessage, this, {error: err}); + switch (err.status) { + case 401: // unauthorized + this.router.navigateByUrl('/auth').then(); + break; + case 403: // forbidden + location.reload(true); + break; + } + // Return an observable with a user-facing error message. + return throwError(err); + }) + ); return next.handle(request); } } diff --git a/src/app/_interceptors/logging.interceptor.ts b/src/app/_interceptors/logging.interceptor.ts index d992e73..c4b06c7 100644 --- a/src/app/_interceptors/logging.interceptor.ts +++ b/src/app/_interceptors/logging.interceptor.ts @@ -19,20 +19,20 @@ export class LoggingInterceptor implements HttpInterceptor { intercept(request: HttpRequest, next: HttpHandler): Observable> { return next.handle(request); - // this.loggingService.sendInfoLevelMessage(request); - // const startTime = Date.now(); - // let status: string; + this.loggingService.sendInfoLevelMessage(request); + const startTime = Date.now(); + let status: string; - // return next.handle(request).pipe(tap(event => { - // status = ''; - // if (event instanceof HttpResponse) { - // status = 'succeeded'; - // } - // }, error => status = 'failed'), - // finalize(() => { - // const elapsedTime = Date.now() - startTime; - // const message = `${request.method} request for ${request.urlWithParams} ${status} in ${elapsedTime} ms`; - // this.loggingService.sendInfoLevelMessage(message); - // })); + return next.handle(request).pipe(tap(event => { + status = ''; + if (event instanceof HttpResponse) { + status = 'succeeded'; + } + }, error => status = 'failed'), + finalize(() => { + const elapsedTime = Date.now() - startTime; + const message = `${request.method} request for ${request.urlWithParams} ${status} in ${elapsedTime} ms`; + this.loggingService.sendInfoLevelMessage(message); + })); } } diff --git a/src/app/pages/accounts/accounts.component.ts b/src/app/pages/accounts/accounts.component.ts index 007152c..1b112f0 100644 --- a/src/app/pages/accounts/accounts.component.ts +++ b/src/app/pages/accounts/accounts.component.ts @@ -27,9 +27,11 @@ export class AccountsComponent implements OnInit { private userService: UserService, private loggingService: LoggingService, private router: Router - ) { + ) + { (async () => { try { + // TODO it feels like this shuold be in the onInit handler await this.userService.loadAccounts(100); } catch (error) { this.loggingService.sendErrorLevelMessage('Failed to load accounts', this, {error});