ProfilerEffect

Show an info message on unusually slow requests:
import { Injectable } from '@angular/core';
import { HttpContextToken, HttpErrorResponse, HttpRequest, HttpResponse } from '@angular/common/http';
import { ObserveBeforeEffect, ObserveAfterEffect } from 'ngx-crud';
​
import { NotifierService } from './notifier.service';
​
@Injectable()
export class ProfilerEffect implements ObserveBeforeEffect, ObserveAfterEffect
{
protected defaultContext : number = 0;
protected token : HttpContextToken<number> = new HttpContextToken<number>(() => this.defaultContext);
​
constructor(protected notifierService : NotifierService) {}
​
before<T>(request : HttpRequest<T>) : HttpRequest<T>
{
request.context.set(this.token, Date.now());
return request;
}
​
after<T>(request : HttpRequest<T>, response : HttpResponse<T> | HttpErrorResponse) : void
{
const requestTime : number = Date.now() - request.context.get(this.token);
​
if (requestTime > 500)
{
notifierService.info('REQUEST_SLOW');
}
}
}
Last modified 9mo ago