From 1d49072345ba4557dadf2e29019f030feecd25ab Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Wed, 3 Jun 2020 14:03:16 +0300 Subject: [PATCH] feat(core): add null query param control to request method of rest service #4129 --- npm/ng-packs/apps/dev-app/src/app/app.module.ts | 2 ++ .../core/src/lib/services/rest.service.ts | 17 ++++++++++++++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/npm/ng-packs/apps/dev-app/src/app/app.module.ts b/npm/ng-packs/apps/dev-app/src/app/app.module.ts index 2416eb881d..e00a99d499 100644 --- a/npm/ng-packs/apps/dev-app/src/app/app.module.ts +++ b/npm/ng-packs/apps/dev-app/src/app/app.module.ts @@ -23,6 +23,8 @@ const LOGGERS = [NgxsLoggerPluginModule.forRoot({ disabled: false })]; AppRoutingModule, CoreModule.forRoot({ environment, + sendNullsAsQueryParam: false, + skipGetAppConfiguration: false, }), ThemeSharedModule.forRoot(), AccountConfigModule.forRoot({ redirectUrl: '/' }), diff --git a/npm/ng-packs/packages/core/src/lib/services/rest.service.ts b/npm/ng-packs/packages/core/src/lib/services/rest.service.ts index 936bc2a768..085faeadfc 100644 --- a/npm/ng-packs/packages/core/src/lib/services/rest.service.ts +++ b/npm/ng-packs/packages/core/src/lib/services/rest.service.ts @@ -1,5 +1,5 @@ import { HttpClient, HttpRequest } from '@angular/common/http'; -import { Injectable } from '@angular/core'; +import { Injectable, Inject } from '@angular/core'; import { Store } from '@ngxs/store'; import { Observable, throwError } from 'rxjs'; import { catchError } from 'rxjs/operators'; @@ -7,12 +7,18 @@ import { RestOccurError } from '../actions/rest.actions'; import { Rest } from '../models/rest'; import { ConfigState } from '../states/config.state'; import { isUndefinedOrEmptyString } from '../utils/common-utils'; +import { ABP } from '../models/common'; +import { CORE_OPTIONS } from '../tokens/options.token'; @Injectable({ providedIn: 'root', }) export class RestService { - constructor(private http: HttpClient, private store: Store) {} + constructor( + @Inject(CORE_OPTIONS) private options: ABP.Root, + private http: HttpClient, + private store: Store, + ) {} private getApiFromStore(apiName: string): string { return this.store.selectSnapshot(ConfigState.getApiUrl(apiName)); @@ -41,7 +47,12 @@ export class RestService { params: Object.keys(params).reduce((acc, key) => { const value = params[key]; - if (!isUndefinedOrEmptyString(value)) acc[key] = value; + if ( + !isUndefinedOrEmptyString(value) && + (value === null ? this.options.sendNullsAsQueryParam : true) + ) { + acc[key] = value; + } return acc; }, {}),