diff --git a/lib/content-services/src/lib/document-list/services/custom-resources.service.ts b/lib/content-services/src/lib/document-list/services/custom-resources.service.ts index 8f3ca415ec..d5ae37d990 100644 --- a/lib/content-services/src/lib/document-list/services/custom-resources.service.ts +++ b/lib/content-services/src/lib/document-list/services/custom-resources.service.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import { AlfrescoApiService, LogService, PaginationModel } from '@alfresco/adf-core'; +import { AlfrescoApiService, ApiClientsService, LogService, PaginationModel } from '@alfresco/adf-core'; import { NodePaging, DeletedNodesPaging, @@ -59,10 +59,8 @@ export class CustomResourcesService { return this._trashcanApi; } - private _searchApi: SearchApi; get searchApi(): SearchApi { - this._searchApi = this._searchApi ?? new SearchApi(this.apiService.getInstance()); - return this._searchApi; + return this.apiClientsService.get('SearchClient.search'); } private _sharedLinksApi: SharedlinksApi; @@ -83,8 +81,11 @@ export class CustomResourcesService { return this._nodesApi; } - constructor(private apiService: AlfrescoApiService, private logService: LogService) { - } + constructor( + private apiClientsService: ApiClientsService, + private apiService: AlfrescoApiService, + private logService: LogService + ) {} /** * Gets files recently accessed by a user. diff --git a/lib/core/api/clients/alfresco-js-clients.module.ts b/lib/core/api/clients/alfresco-js-clients.module.ts index 61d4446ac1..e9eb361372 100644 --- a/lib/core/api/clients/alfresco-js-clients.module.ts +++ b/lib/core/api/clients/alfresco-js-clients.module.ts @@ -18,11 +18,13 @@ import { NgModule } from '@angular/core'; import { ActivitiClientModule } from './activiti/activiti-client.module'; import { DiscoveryClientModule } from './discovery/discovery-client.module'; +import { SearchClientModule } from './search/search-client.module'; @NgModule({ imports: [ ActivitiClientModule, - DiscoveryClientModule + DiscoveryClientModule, + SearchClientModule ] }) export class AlfrescoJsClientsModule { } diff --git a/lib/core/api/clients/search/search-client.module.ts b/lib/core/api/clients/search/search-client.module.ts new file mode 100644 index 0000000000..e44c57c0fb --- /dev/null +++ b/lib/core/api/clients/search/search-client.module.ts @@ -0,0 +1,36 @@ +/*! + * @license + * Copyright 2019 Alfresco Software, Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { SearchApi } from '@alfresco/js-api'; +import { NgModule } from '@angular/core'; +import { ApiClientsService } from '../../api-clients.service'; + +declare global { + // eslint-disable-next-line @typescript-eslint/no-namespace + namespace Api { + interface ApiRegistry { + ['SearchClient.search']: SearchApi; + } + } +} + +@NgModule() +export class SearchClientModule { + constructor(private apiClientsService: ApiClientsService) { + this.apiClientsService.register('SearchClient.search', SearchApi); + } +} diff --git a/lib/core/services/search.service.ts b/lib/core/services/search.service.ts index 3c8b485145..c670813bc0 100644 --- a/lib/core/services/search.service.ts +++ b/lib/core/services/search.service.ts @@ -16,10 +16,11 @@ */ import { Injectable } from '@angular/core'; -import { NodePaging, QueriesApi, QueryBody, ResultSetPaging, SearchApi } from '@alfresco/js-api'; +import { NodePaging, QueriesApi, QueryBody, ResultSetPaging } from '@alfresco/js-api'; import { Observable, Subject, from, throwError } from 'rxjs'; import { AlfrescoApiService } from './alfresco-api.service'; import { SearchConfigurationService } from './search-configuration.service'; +import { ApiClientsService } from '../api/api-clients.service'; @Injectable({ providedIn: 'root' @@ -34,14 +35,14 @@ export class SearchService { return this._queriesApi; } - private _searchApi: SearchApi; - get searchApi(): SearchApi { - this._searchApi = this._searchApi ?? new SearchApi(this.apiService.getInstance()); - return this._searchApi; + get searchApi() { + return this.apiClientsService.get('SearchClient.search'); } - constructor(private apiService: AlfrescoApiService, - private searchConfigurationService: SearchConfigurationService) { + constructor( + private apiClientsService: ApiClientsService, + private apiService: AlfrescoApiService, + private searchConfigurationService: SearchConfigurationService) { } /**