bfend
Version:
Admin template base on ng-zorro-antd
91 lines • 9.74 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc
*/
import { throwError } from 'rxjs';
import { Injectable } from '@angular/core';
import { HttpErrorResponse, HttpEventType } from '@angular/common/http';
import { tap, finalize, catchError } from 'rxjs/operators';
import { NzMessageService } from 'ng-zorro-antd';
import { BfApiError } from './api.error';
import { HTTP_MANAGE_ZONE, BfHttpService } from './http.service';
export class BfHttpManagedInterceptor {
/**
* @param {?} http
* @param {?} nzMessage
*/
constructor(http, nzMessage) {
this.http = http;
this.nzMessage = nzMessage;
}
/**
* @param {?} req
* @param {?} next
* @return {?}
*/
intercept(req, next) {
return next.handle(req).pipe(tap(res => {
if (res.type === HttpEventType.Sent && this.isAutoLoading(req)) {
this.http.setLoading(true);
}
}), catchError(err => {
if (this.isHandleError(req)) {
if (err instanceof BfApiError) {
this.nzMessage.error(err.toString(), { nzDuration: 3000 });
}
else if (err instanceof HttpErrorResponse) {
switch (err.status) {
case 422:
/** @type {?} */
const msg = [];
if (err.error && err.error.errors) {
for (const i of Object.keys(err.error.errors)) {
for (const e of err.error.errors[i]) {
msg.push(e);
}
}
}
this.nzMessage.error(msg.length > 0 ? msg.join('<br>') : '数据校验失败', { nzDuration: 3000 });
break;
default:
this.nzMessage.error('网络错误,请稍后再试', { nzDuration: 3000 });
}
}
}
return throwError(err);
}), finalize(() => {
if (this.isAutoLoading(req)) {
// 自动 Loading
this.http.setLoading(false);
}
}));
}
/**
* @param {?} req
* @return {?}
*/
isAutoLoading(req) {
return !req.url.startsWith('assets') && (Zone.current.name !== HTTP_MANAGE_ZONE || Zone.current.get('auto_loading'));
}
/**
* @param {?} req
* @return {?}
*/
isHandleError(req) {
return !req.url.startsWith('assets') && (Zone.current.name !== HTTP_MANAGE_ZONE || Zone.current.get('handle_error'));
}
}
BfHttpManagedInterceptor.decorators = [
{ type: Injectable },
];
BfHttpManagedInterceptor.ctorParameters = () => [
{ type: BfHttpService },
{ type: NzMessageService }
];
if (false) {
/** @type {?} */
BfHttpManagedInterceptor.prototype.http;
/** @type {?} */
BfHttpManagedInterceptor.prototype.nzMessage;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1tYW5hZ2VkLmludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6Im5nOi8vYmZlbmQvIiwic291cmNlcyI6WyJsaWIvaHR0cC9odHRwLW1hbmFnZWQuaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQWUsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQ0wsaUJBQWlCLEVBRWpCLGFBQWEsRUFJZCxNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdqRSxNQUFNOzs7OztJQUNKLFlBQW9CLElBQW1CLEVBQVUsU0FBMkI7UUFBeEQsU0FBSSxHQUFKLElBQUksQ0FBZTtRQUFVLGNBQVMsR0FBVCxTQUFTLENBQWtCO0lBQUcsQ0FBQzs7Ozs7O0lBRWhGLFNBQVMsQ0FBQyxHQUFxQixFQUFFLElBQWlCO1FBQ2hELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQzFCLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNSLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxhQUFhLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQzlELElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQzVCO1FBQ0gsQ0FBQyxDQUFDLEVBQ0YsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ2YsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUMzQixJQUFJLEdBQUcsWUFBWSxVQUFVLEVBQUU7b0JBQzdCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsRUFBRSxFQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO2lCQUMxRDtxQkFBTSxJQUFJLEdBQUcsWUFBWSxpQkFBaUIsRUFBRTtvQkFDM0MsUUFBUSxHQUFHLENBQUMsTUFBTSxFQUFFO3dCQUNsQixLQUFLLEdBQUc7O2tDQUNBLEdBQUcsR0FBRyxFQUFFOzRCQUVkLElBQUksR0FBRyxDQUFDLEtBQUssSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRTtnQ0FDakMsS0FBSyxNQUFNLENBQUMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUU7b0NBQzdDLEtBQUssTUFBTSxDQUFDLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUU7d0NBQ25DLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7cUNBQ2I7aUNBQ0Y7NkJBQ0Y7NEJBRUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDOzRCQUV2RixNQUFNO3dCQUVSOzRCQUNFLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxFQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO3FCQUMxRDtpQkFDRjthQUNGO1lBRUQsT0FBTyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekIsQ0FBQyxDQUFDLEVBQ0YsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNaLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDM0IsYUFBYTtnQkFDYixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUM3QjtRQUNILENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDOzs7OztJQUVPLGFBQWEsQ0FBQyxHQUFxQjtRQUN6QyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO0lBQ3ZILENBQUM7Ozs7O0lBRU8sYUFBYSxDQUFDLEdBQXFCO1FBQ3pDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLGdCQUFnQixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7SUFDdkgsQ0FBQzs7O1lBdkRGLFVBQVU7OztZQUZnQixhQUFhO1lBSC9CLGdCQUFnQjs7OztJQU9YLHdDQUEyQjs7SUFBRSw2Q0FBbUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3Rocm93RXJyb3IsICBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBIdHRwRXJyb3JSZXNwb25zZSxcbiAgSHR0cEV2ZW50LFxuICBIdHRwRXZlbnRUeXBlLFxuICBIdHRwSGFuZGxlcixcbiAgSHR0cEludGVyY2VwdG9yIGFzIEh0dHBJbnRlcmNlcHRvckludGVyZmFjZSxcbiAgSHR0cFJlcXVlc3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgdGFwLCBmaW5hbGl6ZSwgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE56TWVzc2FnZVNlcnZpY2UgfSBmcm9tICduZy16b3Jyby1hbnRkJztcblxuaW1wb3J0IHsgQmZBcGlFcnJvciB9IGZyb20gJy4vYXBpLmVycm9yJztcbmltcG9ydCB7IEhUVFBfTUFOQUdFX1pPTkUsIEJmSHR0cFNlcnZpY2UgfSBmcm9tICcuL2h0dHAuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBCZkh0dHBNYW5hZ2VkSW50ZXJjZXB0b3IgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3JJbnRlcmZhY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEJmSHR0cFNlcnZpY2UsIHByaXZhdGUgbnpNZXNzYWdlOiBOek1lc3NhZ2VTZXJ2aWNlKSB7fVxuXG4gIGludGVyY2VwdChyZXE6IEh0dHBSZXF1ZXN0PGFueT4sIG5leHQ6IEh0dHBIYW5kbGVyKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4ge1xuICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXEpLnBpcGUoXG4gICAgICB0YXAocmVzID0+IHtcbiAgICAgICAgaWYgKHJlcy50eXBlID09PSBIdHRwRXZlbnRUeXBlLlNlbnQgJiYgdGhpcy5pc0F1dG9Mb2FkaW5nKHJlcSkpIHtcbiAgICAgICAgICB0aGlzLmh0dHAuc2V0TG9hZGluZyh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBjYXRjaEVycm9yKGVyciA9PiB7XG4gICAgICAgIGlmICh0aGlzLmlzSGFuZGxlRXJyb3IocmVxKSkge1xuICAgICAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBCZkFwaUVycm9yKSB7XG4gICAgICAgICAgICB0aGlzLm56TWVzc2FnZS5lcnJvcihlcnIudG9TdHJpbmcoKSwge256RHVyYXRpb246IDMwMDB9KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGVyciBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKGVyci5zdGF0dXMpIHtcbiAgICAgICAgICAgICAgY2FzZSA0MjI6XG4gICAgICAgICAgICAgICAgY29uc3QgbXNnID0gW107XG5cbiAgICAgICAgICAgICAgICBpZiAoZXJyLmVycm9yICYmIGVyci5lcnJvci5lcnJvcnMpIHtcbiAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgaSBvZiBPYmplY3Qua2V5cyhlcnIuZXJyb3IuZXJyb3JzKSkge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGUgb2YgZXJyLmVycm9yLmVycm9yc1tpXSkge1xuICAgICAgICAgICAgICAgICAgICAgIG1zZy5wdXNoKGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5uek1lc3NhZ2UuZXJyb3IobXNnLmxlbmd0aCA+IDAgPyBtc2cuam9pbignPGJyPicpIDogJ+aVsOaNruagoemqjOWksei0pScsIHtuekR1cmF0aW9uOiAzMDAwfSk7XG5cbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRoaXMubnpNZXNzYWdlLmVycm9yKCfnvZHnu5zplJnor6/vvIzor7fnqI3lkI7lho3or5UnLCB7bnpEdXJhdGlvbjogMzAwMH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycik7XG4gICAgICB9KSxcbiAgICAgIGZpbmFsaXplKCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuaXNBdXRvTG9hZGluZyhyZXEpKSB7XG4gICAgICAgICAgLy8g6Ieq5YqoIExvYWRpbmdcbiAgICAgICAgICB0aGlzLmh0dHAuc2V0TG9hZGluZyhmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNBdXRvTG9hZGluZyhyZXE6IEh0dHBSZXF1ZXN0PGFueT4pIHtcbiAgICByZXR1cm4gIXJlcS51cmwuc3RhcnRzV2l0aCgnYXNzZXRzJykgJiYgKFpvbmUuY3VycmVudC5uYW1lICE9PSBIVFRQX01BTkFHRV9aT05FIHx8IFpvbmUuY3VycmVudC5nZXQoJ2F1dG9fbG9hZGluZycpKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNIYW5kbGVFcnJvcihyZXE6IEh0dHBSZXF1ZXN0PGFueT4pIHtcbiAgICByZXR1cm4gIXJlcS51cmwuc3RhcnRzV2l0aCgnYXNzZXRzJykgJiYgKFpvbmUuY3VycmVudC5uYW1lICE9PSBIVFRQX01BTkFHRV9aT05FIHx8IFpvbmUuY3VycmVudC5nZXQoJ2hhbmRsZV9lcnJvcicpKTtcbiAgfVxufVxuIl19