diff --git a/lib/content-services/src/lib/aspect-list/aspect-list.service.ts b/lib/content-services/src/lib/aspect-list/aspect-list.service.ts index 80ac9a57cf..5baa8c759b 100644 --- a/lib/content-services/src/lib/aspect-list/aspect-list.service.ts +++ b/lib/content-services/src/lib/aspect-list/aspect-list.service.ts @@ -29,13 +29,16 @@ import { AspectEntry, AspectPaging, AspectsApi } from '@alfresco/js-api'; }) export class AspectListService { - private aspectsApi: AspectsApi; + _aspectsApi: AspectsApi; + get aspectsApi(): AspectsApi { + this._aspectsApi = this._aspectsApi ?? new AspectsApi(this.alfrescoApiService.getInstance()); + return this._aspectsApi; + } constructor(private alfrescoApiService: AlfrescoApiService, private appConfigService: AppConfigService, private dialog: MatDialog, private logService: LogService) { - this.aspectsApi = new AspectsApi(this.alfrescoApiService.getInstance()); } getAspects(): Observable { diff --git a/lib/content-services/src/lib/audit/audit.service.ts b/lib/content-services/src/lib/audit/audit.service.ts index d7be676e95..b0a0c4c955 100644 --- a/lib/content-services/src/lib/audit/audit.service.ts +++ b/lib/content-services/src/lib/audit/audit.service.ts @@ -18,7 +18,15 @@ import { Injectable } from '@angular/core'; import { Observable, from, throwError } from 'rxjs'; import { AlfrescoApiService, LogService } from '@alfresco/adf-core'; -import { AuditApi, AuditAppPaging, AuditAppEntry, AuditApp, AuditBodyUpdate, AuditEntryPaging, AuditEntryEntry } from '@alfresco/js-api'; +import { + AuditApi, + AuditAppPaging, + AuditAppEntry, + AuditApp, + AuditBodyUpdate, + AuditEntryPaging, + AuditEntryEntry +} from '@alfresco/js-api'; import { catchError } from 'rxjs/operators'; @Injectable({ @@ -26,10 +34,13 @@ import { catchError } from 'rxjs/operators'; }) export class AuditService { - auditApi: AuditApi; + _auditApi: AuditApi; + get auditApi(): AuditApi { + this._auditApi = this._auditApi ?? new AuditApi(this.apiService.getInstance()); + return this._auditApi; + } constructor(private apiService: AlfrescoApiService, private logService: LogService) { - this.auditApi = new AuditApi(this.apiService.getInstance()); } getAuditApps(opts?: any): Observable { @@ -57,7 +68,7 @@ export class AuditService { updateAuditApp(auditApplicationId: string, auditAppBodyUpdate: boolean, opts?: any): Observable { const defaultOptions = {}; const queryOptions = Object.assign({}, defaultOptions, opts); - return from(this.auditApi.updateAuditApp(auditApplicationId, new AuditBodyUpdate({ isEnabled: auditAppBodyUpdate}), queryOptions)) + return from(this.auditApi.updateAuditApp(auditApplicationId, new AuditBodyUpdate({ isEnabled: auditAppBodyUpdate }), queryOptions)) .pipe( catchError((err: any) => this.handleError(err)) ); diff --git a/lib/content-services/src/lib/content-metadata/services/property-descriptors.service.ts b/lib/content-services/src/lib/content-metadata/services/property-descriptors.service.ts index 79bf0b3967..d4e05ba7d3 100644 --- a/lib/content-services/src/lib/content-metadata/services/property-descriptors.service.ts +++ b/lib/content-services/src/lib/content-metadata/services/property-descriptors.service.ts @@ -26,10 +26,14 @@ import { ClassesApi } from '@alfresco/js-api'; providedIn: 'root' }) export class PropertyDescriptorsService { - private classesApi: ClassesApi; + + private _classesApi; + get classesApi(): ClassesApi { + this._classesApi = this._classesApi ?? new ClassesApi(this.alfrescoApiService.getInstance()); + return this._classesApi; + } constructor(private alfrescoApiService: AlfrescoApiService) { - this.classesApi = new ClassesApi(this.alfrescoApiService.getInstance()); } load(groupNames: string[]): Observable { diff --git a/lib/content-services/src/lib/content-node-share/content-node-share.directive.ts b/lib/content-services/src/lib/content-node-share/content-node-share.directive.ts index c25d13b6bc..31381043ef 100644 --- a/lib/content-services/src/lib/content-node-share/content-node-share.directive.ts +++ b/lib/content-services/src/lib/content-node-share/content-node-share.directive.ts @@ -43,13 +43,17 @@ export class NodeSharedDirective implements OnChanges, OnDestroy { baseShareUrl: string; private onDestroy$ = new Subject(); - private nodesApi = new NodesApi(); + + _nodesApi: NodesApi; + get nodesApi(): NodesApi { + this._nodesApi = this._nodesApi ?? new NodesApi(this.alfrescoApiService.getInstance()); + return this._nodesApi; + } constructor( private dialog: MatDialog, private zone: NgZone, private alfrescoApiService: AlfrescoApiService) { - this.nodesApi = new NodesApi(this.alfrescoApiService.getInstance()); } ngOnDestroy() { diff --git a/lib/content-services/src/lib/content-type/content-type.service.ts b/lib/content-services/src/lib/content-type/content-type.service.ts index a97d7c5d47..5c3913717f 100644 --- a/lib/content-services/src/lib/content-type/content-type.service.ts +++ b/lib/content-services/src/lib/content-type/content-type.service.ts @@ -25,10 +25,13 @@ import { map } from 'rxjs/operators'; }) export class ContentTypeService { - private typesApi: TypesApi; + _typesApi: TypesApi; + get typesApi(): TypesApi { + this._typesApi = this._typesApi ?? new TypesApi(this.alfrescoApiService.getInstance()); + return this._typesApi; + } constructor(private alfrescoApiService: AlfrescoApiService) { - this.typesApi = new TypesApi(this.alfrescoApiService.getInstance()); } getContentTypeByPrefix(prefixedType: string): Observable { diff --git a/lib/content-services/src/lib/dialogs/library/library.dialog.ts b/lib/content-services/src/lib/dialogs/library/library.dialog.ts index 274b7e611b..1536aec73a 100644 --- a/lib/content-services/src/lib/dialogs/library/library.dialog.ts +++ b/lib/content-services/src/lib/dialogs/library/library.dialog.ts @@ -72,7 +72,11 @@ export class LibraryDialogComponent implements OnInit, OnDestroy { ]; disableCreateButton = false; - queriesApi: QueriesApi; + _queriesApi: QueriesApi; + get queriesApi(): QueriesApi { + this._queriesApi = this._queriesApi ?? new QueriesApi(this.alfrescoApiService.getInstance()); + return this._queriesApi; + } constructor( private alfrescoApiService: AlfrescoApiService, @@ -80,7 +84,6 @@ export class LibraryDialogComponent implements OnInit, OnDestroy { private formBuilder: FormBuilder, private dialog: MatDialogRef ) { - this.queriesApi = new QueriesApi(this.alfrescoApiService.getInstance()); } ngOnInit() { diff --git a/lib/content-services/src/lib/dialogs/node-lock.dialog.ts b/lib/content-services/src/lib/dialogs/node-lock.dialog.ts index 00d48941f9..17037dc7ba 100644 --- a/lib/content-services/src/lib/dialogs/node-lock.dialog.ts +++ b/lib/content-services/src/lib/dialogs/node-lock.dialog.ts @@ -35,7 +35,11 @@ export class NodeLockDialogComponent implements OnInit { node: Node = null; nodeName: string; - private nodesApi: NodesApi; + _nodesApi: NodesApi; + get nodesApi(): NodesApi { + this._nodesApi = this._nodesApi ?? new NodesApi(this.alfrescoApi.getInstance()); + return this._nodesApi; + } constructor( private formBuilder: FormBuilder, @@ -45,7 +49,6 @@ export class NodeLockDialogComponent implements OnInit { @Inject(MAT_DIALOG_DATA) public data: any ) { - this.nodesApi = new NodesApi(this.alfrescoApi.getInstance()); } ngOnInit() { diff --git a/lib/content-services/src/lib/document-list/components/document-list.component.ts b/lib/content-services/src/lib/document-list/components/document-list.component.ts index 09663f08ce..f581beac8d 100644 --- a/lib/content-services/src/lib/document-list/components/document-list.component.ts +++ b/lib/content-services/src/lib/document-list/components/document-list.component.ts @@ -342,7 +342,12 @@ export class DocumentListComponent implements OnInit, OnChanges, OnDestroy, Afte private rowMenuCache: { [key: string]: ContentActionModel[] } = {}; private loadingTimeout; private onDestroy$ = new Subject(); - private nodesApi: NodesApi; + + _nodesApi: NodesApi; + get nodesApi(): NodesApi { + this._nodesApi = this._nodesApi ?? new NodesApi(this.alfrescoApiService.getInstance()); + return this._nodesApi; + } constructor(private documentListService: DocumentListService, private ngZone: NgZone, @@ -353,7 +358,6 @@ export class DocumentListComponent implements OnInit, OnChanges, OnDestroy, Afte private thumbnailService: ThumbnailService, private alfrescoApiService: AlfrescoApiService, private lockService: LockService) { - this.nodesApi = new NodesApi(this.alfrescoApiService.getInstance()); this.userPreferencesService .select(UserPreferenceValues.PaginationSize) .pipe(takeUntil(this.onDestroy$)) 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 69b0deea37..451969e307 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 @@ -41,22 +41,49 @@ export class CustomResourcesService { private CREATE_PERMISSION = 'create'; - peopleApi: PeopleApi; - sitesApi: SitesApi; - trashcanApi: TrashcanApi; - searchApi: SearchApi; - sharedLinksApi: SharedlinksApi; - favoritesApi: FavoritesApi; - nodesApi: NodesApi; + _peopleApi: PeopleApi; + get peopleApi(): PeopleApi { + this._peopleApi = this._peopleApi ?? new PeopleApi(this.apiService.getInstance()); + return this._peopleApi; + } + + _sitesApi: SitesApi; + get sitesApi(): SitesApi { + this._sitesApi = this._sitesApi ?? new SitesApi(this.apiService.getInstance()); + return this._sitesApi; + } + + _trashcanApi: TrashcanApi; + get trashcanApi(): TrashcanApi { + this._trashcanApi = this._trashcanApi ?? new TrashcanApi(this.apiService.getInstance()); + return this._trashcanApi; + } + + _searchApi: SearchApi; + get searchApi(): SearchApi { + this._searchApi = this._searchApi ?? new SearchApi(this.apiService.getInstance()); + return this._searchApi; + } + + _sharedLinksApi: SharedlinksApi; + get sharedLinksApi(): SharedlinksApi { + this._sharedLinksApi = this._sharedLinksApi ?? new SharedlinksApi(this.apiService.getInstance()); + return this._sharedLinksApi; + } + + _favoritesApi: FavoritesApi; + get favoritesApi(): FavoritesApi { + this._favoritesApi = this._favoritesApi ?? new FavoritesApi(this.apiService.getInstance()); + return this._favoritesApi; + } + + _nodesApi: NodesApi; + get nodesApi(): NodesApi { + this._nodesApi = this._nodesApi ?? new NodesApi(this.apiService.getInstance()); + return this._nodesApi; + } constructor(private apiService: AlfrescoApiService, private logService: LogService) { - this.peopleApi = new PeopleApi(this.apiService.getInstance()); - this.sitesApi = new SitesApi(this.apiService.getInstance()); - this.favoritesApi = new FavoritesApi(this.apiService.getInstance()); - this.searchApi = new SearchApi(this.apiService.getInstance()); - this.sharedLinksApi = new SharedlinksApi(this.apiService.getInstance()); - this.trashcanApi = new TrashcanApi(this.apiService.getInstance()); - this.nodesApi = new NodesApi(this.apiService.getInstance()); } /** @@ -154,7 +181,7 @@ export class CustomResourcesService { const options = { maxItems: pagination.maxItems, skipCount: pagination.skipCount, - where: where ? `${where} AND ${defaultPredicate}` : defaultPredicate , + where: where ? `${where} AND ${defaultPredicate}` : defaultPredicate, include: includeFieldsRequest }; @@ -165,18 +192,18 @@ export class CustomResourcesService { list: { entries: result.list.entries .map(({ entry }: any) => { - const target = entry.target.file || entry.target.folder; - target.properties = { - ...(target.properties || { - 'cm:title': entry.title || target.title, - 'cm:description': entry.description || target.description - }), - ...(entry.properties || {}) - }; + const target = entry.target.file || entry.target.folder; + target.properties = { + ...(target.properties || { + 'cm:title': entry.title || target.title, + 'cm:description': entry.description || target.description + }), + ...(entry.properties || {}) + }; - return { - entry: target - }; + return { + entry: target + }; }), pagination: result.list.pagination } @@ -209,7 +236,7 @@ export class CustomResourcesService { return new Observable((observer) => { this.sitesApi.listSiteMembershipsForPerson('-me-', options) .then((result: SiteRolePaging) => { - const page: SiteMemberPaging = new SiteMemberPaging( { + const page: SiteMemberPaging = new SiteMemberPaging({ list: { entries: result.list.entries .map(({ entry: { site } }: any) => { diff --git a/lib/content-services/src/lib/document-list/services/document-list.service.ts b/lib/content-services/src/lib/document-list/services/document-list.service.ts index 3681cee899..2e1f9ba7f1 100644 --- a/lib/content-services/src/lib/document-list/services/document-list.service.ts +++ b/lib/content-services/src/lib/document-list/services/document-list.service.ts @@ -34,13 +34,16 @@ export class DocumentListService implements DocumentListLoader { static ROOT_ID = '-root-'; - nodes: NodesApi; + _nodesApi: NodesApi; + get nodes(): NodesApi { + this._nodesApi = this._nodesApi ?? new NodesApi(this.apiService.getInstance()); + return this._nodesApi; + } constructor(private contentService: ContentService, private apiService: AlfrescoApiService, private logService: LogService, private customResourcesService: CustomResourcesService) { - this.nodes = new NodesApi(this.apiService.getInstance()); } /** diff --git a/lib/content-services/src/lib/group/services/group.service.ts b/lib/content-services/src/lib/group/services/group.service.ts index 61d302a022..8ad083f2cf 100644 --- a/lib/content-services/src/lib/group/services/group.service.ts +++ b/lib/content-services/src/lib/group/services/group.service.ts @@ -24,12 +24,15 @@ import { AlfrescoApiService } from '@alfresco/adf-core'; }) export class GroupService { - groupsApi: GroupsApi; + _groupsApi: GroupsApi; + get groupsApi(): GroupsApi { + this._groupsApi = this._groupsApi ?? new GroupsApi(this.alfrescoApiService.getInstance()); + return this._groupsApi; + } constructor( private alfrescoApiService: AlfrescoApiService ) { - this.groupsApi = new GroupsApi(this.alfrescoApiService.getInstance()); } async listAllGroupMembershipsForPerson(personId: string, opts?: any, accumulator = []): Promise { diff --git a/lib/content-services/src/lib/permission-manager/services/node-permission.service.ts b/lib/content-services/src/lib/permission-manager/services/node-permission.service.ts index 810b0efd1a..22d8aa7d73 100644 --- a/lib/content-services/src/lib/permission-manager/services/node-permission.service.ts +++ b/lib/content-services/src/lib/permission-manager/services/node-permission.service.ts @@ -42,13 +42,16 @@ import { RoleModel } from '../models/role.model'; }) export class NodePermissionService { - groupsApi: GroupsApi; + _groupsApi: GroupsApi; + get groupsApi(): GroupsApi { + this._groupsApi = this._groupsApi ?? new GroupsApi(this.apiService.getInstance()); + return this._groupsApi; + } constructor(private apiService: AlfrescoApiService, private searchApiService: SearchService, private nodeService: NodesApiService, private translation: TranslationService) { - this.groupsApi = new GroupsApi(this.apiService.getInstance()); } /** diff --git a/lib/content-services/src/lib/search/services/base-query-builder.service.ts b/lib/content-services/src/lib/search/services/base-query-builder.service.ts index 856859f61d..59b1c88986 100644 --- a/lib/content-services/src/lib/search/services/base-query-builder.service.ts +++ b/lib/content-services/src/lib/search/services/base-query-builder.service.ts @@ -42,7 +42,12 @@ import { SearchForm } from '../models/search-form.interface'; providedIn: 'root' }) export abstract class BaseQueryBuilderService { - private searchApi: SearchApi; + + _searchApi: SearchApi; + get searchApi(): SearchApi { + this._searchApi = this._searchApi ?? new SearchApi(this.alfrescoApiService.getInstance()); + return this._searchApi; + } /* Stream that emits the search configuration whenever the user change the search forms */ configUpdated = new Subject(); @@ -88,7 +93,6 @@ export abstract class BaseQueryBuilderService { ranges: { [id: string]: SearchRange } = {}; constructor(protected appConfig: AppConfigService, protected alfrescoApiService: AlfrescoApiService) { - this.searchApi = new SearchApi(this.alfrescoApiService.getInstance()); this.resetToDefaults(); } diff --git a/lib/content-services/src/lib/social/services/rating.service.ts b/lib/content-services/src/lib/social/services/rating.service.ts index d19b332699..1c2edf33b1 100644 --- a/lib/content-services/src/lib/social/services/rating.service.ts +++ b/lib/content-services/src/lib/social/services/rating.service.ts @@ -26,10 +26,13 @@ import { catchError } from 'rxjs/operators'; }) export class RatingService { - ratingsApi: RatingsApi; + _ratingsApi: RatingsApi; + get ratingsApi(): RatingsApi { + this._ratingsApi = this._ratingsApi ?? new RatingsApi(this.apiService.getInstance()); + return this._ratingsApi; + } constructor(private apiService: AlfrescoApiService, private logService: LogService) { - this.ratingsApi = new RatingsApi(this.apiService.getInstance()); } /** diff --git a/lib/content-services/src/lib/tag/services/tag.service.ts b/lib/content-services/src/lib/tag/services/tag.service.ts index 5811134d9d..2f7995c70d 100644 --- a/lib/content-services/src/lib/tag/services/tag.service.ts +++ b/lib/content-services/src/lib/tag/services/tag.service.ts @@ -27,7 +27,11 @@ import { TagBody, TagPaging, TagEntry, TagsApi } from '@alfresco/js-api'; // tslint:disable-next-line: directive-class-suffix export class TagService { - private tagsApi: TagsApi; + _tagsApi: TagsApi; + get tagsApi(): TagsApi { + this._tagsApi = this._tagsApi ?? new TagsApi(this.apiService.getInstance()); + return this._tagsApi; + } /** Emitted when tag information is updated. */ @Output() @@ -35,7 +39,6 @@ export class TagService { constructor(private apiService: AlfrescoApiService, private logService: LogService) { - this.tagsApi = new TagsApi(this.apiService.getInstance()); } /** diff --git a/lib/content-services/src/lib/version-manager/version-list.component.ts b/lib/content-services/src/lib/version-manager/version-list.component.ts index 1a9440b2a3..af478bff30 100644 --- a/lib/content-services/src/lib/version-manager/version-list.component.ts +++ b/lib/content-services/src/lib/version-manager/version-list.component.ts @@ -32,9 +32,24 @@ import { ConfirmDialogComponent } from '../dialogs/confirm.dialog'; }) export class VersionListComponent implements OnChanges { - private versionsApi: VersionsApi; - private nodesApi: NodesApi; - private contentApi: ContentApi; + _contentApi: ContentApi; + get contentApi(): ContentApi { + this._contentApi = this._contentApi ?? new ContentApi(this.alfrescoApi.getInstance()); + return this._contentApi; + } + + _versionsApi: VersionsApi; + get versionsApi(): VersionsApi { + this._versionsApi = this._versionsApi ?? new VersionsApi(this.alfrescoApi.getInstance()); + return this._versionsApi; + } + + _nodesApi: NodesApi; + get nodesApi(): NodesApi { + this._nodesApi = this._nodesApi ?? new NodesApi(this.alfrescoApi.getInstance()); + return this._nodesApi; + } + versions: VersionEntry[] = []; isLoading = true; @@ -73,9 +88,6 @@ export class VersionListComponent implements OnChanges { constructor(private alfrescoApi: AlfrescoApiService, private contentService: ContentService, private dialog: MatDialog) { - this.versionsApi = new VersionsApi(this.alfrescoApi.getInstance()); - this.nodesApi = new NodesApi(this.alfrescoApi.getInstance()); - this.contentApi = new ContentApi(this.alfrescoApi.getInstance()); } ngOnChanges() { diff --git a/lib/content-services/src/lib/webscript/webscript.component.ts b/lib/content-services/src/lib/webscript/webscript.component.ts index 86ead4b3d1..a58b43bab3 100644 --- a/lib/content-services/src/lib/webscript/webscript.component.ts +++ b/lib/content-services/src/lib/webscript/webscript.component.ts @@ -45,6 +45,12 @@ import { WebscriptApi } from '@alfresco/js-api'; }) export class WebscriptComponent implements OnChanges { + _webscriptApi: WebscriptApi; + get webscriptApi(): WebscriptApi { + this._webscriptApi = this._webscriptApi ?? new WebscriptApi(this.apiService.getInstance()); + return this._webscriptApi; + } + /** (required) Path to the webscript (as defined by webscript). */ @Input() scriptPath: string; @@ -81,11 +87,8 @@ export class WebscriptComponent implements OnChanges { data: any = undefined; showError: boolean = false; - webscriptApi: WebscriptApi; - constructor(private apiService: AlfrescoApiService, private logService: LogService) { - this.webscriptApi = new WebscriptApi(this.apiService.getInstance()); } ngOnChanges() { diff --git a/lib/core/directives/library-favorite.directive.ts b/lib/core/directives/library-favorite.directive.ts index 60c7758ee2..d46406b16e 100644 --- a/lib/core/directives/library-favorite.directive.ts +++ b/lib/core/directives/library-favorite.directive.ts @@ -38,7 +38,12 @@ export class LibraryFavoriteDirective implements OnChanges { @Output() error = new EventEmitter(); private targetLibrary = null; - private favoritesApi: FavoritesApi; + + _favoritesApi: FavoritesApi; + get favoritesApi(): FavoritesApi { + this._favoritesApi = this._favoritesApi ?? new FavoritesApi(this.alfrescoApiService.getInstance()); + return this._favoritesApi; + } @HostListener('click') onClick() { @@ -58,7 +63,6 @@ export class LibraryFavoriteDirective implements OnChanges { } constructor(private alfrescoApiService: AlfrescoApiService) { - this.favoritesApi = new FavoritesApi(this.alfrescoApiService.getInstance()); } ngOnChanges(changes) { diff --git a/lib/core/directives/library-membership.directive.ts b/lib/core/directives/library-membership.directive.ts index 754090fbf6..31064cdf5a 100644 --- a/lib/core/directives/library-membership.directive.ts +++ b/lib/core/directives/library-membership.directive.ts @@ -48,7 +48,11 @@ export class LibraryMembershipDirective implements OnChanges { isJoinRequested: BehaviorSubject = new BehaviorSubject(false); - private sitesApi: SitesApi; + _sitesApi: SitesApi; + get sitesApi(): SitesApi { + this._sitesApi = this._sitesApi ?? new SitesApi(this.alfrescoApiService.getInstance()); + return this._sitesApi; + } /** Site for which to toggle the membership request. */ @Input('adf-library-membership') @@ -75,7 +79,6 @@ export class LibraryMembershipDirective implements OnChanges { private sitesService: SitesService, private versionCompatibilityService: VersionCompatibilityService ) { - this.sitesApi = new SitesApi(this.alfrescoApiService.getInstance()); } ngOnChanges(changes: SimpleChanges) { diff --git a/lib/core/directives/node-delete.directive.ts b/lib/core/directives/node-delete.directive.ts index ca697fd7a2..d9f5dc9079 100644 --- a/lib/core/directives/node-delete.directive.ts +++ b/lib/core/directives/node-delete.directive.ts @@ -62,8 +62,17 @@ export class NodeDeleteDirective implements OnChanges { @Output() delete: EventEmitter = new EventEmitter(); - private trashcanApi: TrashcanApi; - private nodesApi: NodesApi; + _trashcanApi: TrashcanApi; + get trashcanApi(): TrashcanApi { + this._trashcanApi = this._trashcanApi ?? new TrashcanApi(this.alfrescoApiService.getInstance()); + return this._trashcanApi; + } + + _nodesApi: NodesApi; + get nodesApi(): NodesApi { + this._nodesApi = this._nodesApi ?? new NodesApi(this.alfrescoApiService.getInstance()); + return this._nodesApi; + } @HostListener('click') onClick() { @@ -73,8 +82,6 @@ export class NodeDeleteDirective implements OnChanges { constructor(private alfrescoApiService: AlfrescoApiService, private translation: TranslationService, private elementRef: ElementRef) { - this.trashcanApi = new TrashcanApi(this.alfrescoApiService.getInstance()); - this.nodesApi = new NodesApi(this.alfrescoApiService.getInstance()); } ngOnChanges() { diff --git a/lib/core/directives/node-download.directive.ts b/lib/core/directives/node-download.directive.ts index 79bb0c4c8b..e1b81b2241 100755 --- a/lib/core/directives/node-download.directive.ts +++ b/lib/core/directives/node-download.directive.ts @@ -31,7 +31,11 @@ import { DownloadService } from '../services/download.service'; }) export class NodeDownloadDirective { - private contentApi: ContentApi; + _contentApi: ContentApi; + get contentApi(): ContentApi { + this._contentApi = this._contentApi ?? new ContentApi(this.apiService.getInstance()); + return this._contentApi; + } /** Nodes to download. */ @Input('adfNodeDownload') @@ -50,7 +54,6 @@ export class NodeDownloadDirective { private apiService: AlfrescoApiService, private downloadService: DownloadService, private dialog: MatDialog) { - this.contentApi = new ContentApi(this.apiService.getInstance()); } /** diff --git a/lib/core/directives/node-favorite.directive.ts b/lib/core/directives/node-favorite.directive.ts index 9446a5c10d..3ef9661a09 100644 --- a/lib/core/directives/node-favorite.directive.ts +++ b/lib/core/directives/node-favorite.directive.ts @@ -30,7 +30,11 @@ import { catchError, map } from 'rxjs/operators'; export class NodeFavoriteDirective implements OnChanges { favorites: any[] = []; - private favoritesApi: FavoritesApi; + _favoritesApi: FavoritesApi; + get favoritesApi(): FavoritesApi { + this._favoritesApi = this._favoritesApi ?? new FavoritesApi(this.alfrescoApiService.getInstance()); + return this._favoritesApi; + } /** Array of nodes to toggle as favorites. */ @Input('adf-node-favorite') @@ -48,7 +52,6 @@ export class NodeFavoriteDirective implements OnChanges { } constructor(private alfrescoApiService: AlfrescoApiService) { - this.favoritesApi = new FavoritesApi(this.alfrescoApiService.getInstance()); } ngOnChanges(changes) { diff --git a/lib/core/directives/node-restore.directive.ts b/lib/core/directives/node-restore.directive.ts index 1f4791ddf4..ad0c48b5eb 100644 --- a/lib/core/directives/node-restore.directive.ts +++ b/lib/core/directives/node-restore.directive.ts @@ -35,7 +35,12 @@ export class RestoreMessageModel { }) export class NodeRestoreDirective { private readonly restoreProcessStatus; - private trashcanApi: TrashcanApi; + + _trashcanApi: TrashcanApi; + get trashcanApi(): TrashcanApi { + this._trashcanApi = this._trashcanApi ?? new TrashcanApi(this.alfrescoApiService.getInstance()); + return this._trashcanApi; + } /** Array of deleted nodes to restore. */ @Input('adf-restore') @@ -53,7 +58,6 @@ export class NodeRestoreDirective { constructor(private alfrescoApiService: AlfrescoApiService, private translation: TranslationService) { this.restoreProcessStatus = this.processStatus(); - this.trashcanApi = new TrashcanApi(this.alfrescoApiService.getInstance()); } private recover(selection: any) { diff --git a/lib/core/form/services/activiti-alfresco.service.ts b/lib/core/form/services/activiti-alfresco.service.ts index d600b6eee5..63621429f9 100644 --- a/lib/core/form/services/activiti-alfresco.service.ts +++ b/lib/core/form/services/activiti-alfresco.service.ts @@ -38,15 +38,21 @@ export class ActivitiContentService { static UNKNOWN_ERROR_MESSAGE: string = 'Unknown error'; static GENERIC_ERROR_MESSAGE: string = 'Server error'; - integrationAlfrescoOnPremiseApi: IntegrationAlfrescoOnPremiseApi; - contentApi: ActivitiContentApi; + _integrationAlfrescoOnPremiseApi: IntegrationAlfrescoOnPremiseApi; + get integrationAlfrescoOnPremiseApi(): IntegrationAlfrescoOnPremiseApi { + this._integrationAlfrescoOnPremiseApi = this._integrationAlfrescoOnPremiseApi ?? new IntegrationAlfrescoOnPremiseApi(this.apiService.getInstance()); + return this._integrationAlfrescoOnPremiseApi; + } + + _contentApi: ActivitiContentApi; + get contentApi(): ActivitiContentApi { + this._contentApi = this._contentApi ?? new ActivitiContentApi(this.apiService.getInstance()); + return this._contentApi; + } constructor(private apiService: AlfrescoApiService, private logService: LogService, private sitesService: SitesService) { - - this.integrationAlfrescoOnPremiseApi = new IntegrationAlfrescoOnPremiseApi(this.apiService.getInstance()); - this.contentApi = new ActivitiContentApi(this.apiService.getInstance()); } /** diff --git a/lib/core/form/services/ecm-model.service.ts b/lib/core/form/services/ecm-model.service.ts index 35b91f32de..143c338605 100644 --- a/lib/core/form/services/ecm-model.service.ts +++ b/lib/core/form/services/ecm-model.service.ts @@ -32,11 +32,14 @@ export class EcmModelService { public static MODEL_NAME: string = 'activitiFormsModel'; public static TYPE_MODEL: string = 'cm:folder'; - private customModelApi: CustomModelApi; + _customModelApi: CustomModelApi; + get customModelApi(): CustomModelApi { + this._customModelApi = this._customModelApi ?? new CustomModelApi(this.apiService.getInstance()); + return this._customModelApi; + } constructor(private apiService: AlfrescoApiService, private logService: LogService) { - this.customModelApi = new CustomModelApi(this.apiService.getInstance()); } public createEcmTypeForActivitiForm(formName: string, form: FormModel): Observable { diff --git a/lib/core/form/services/form.service.ts b/lib/core/form/services/form.service.ts index 4a143fda02..c08c649cd8 100644 --- a/lib/core/form/services/form.service.ts +++ b/lib/core/form/services/form.service.ts @@ -52,15 +52,59 @@ export class FormService { static UNKNOWN_ERROR_MESSAGE: string = 'Unknown error'; static GENERIC_ERROR_MESSAGE: string = 'Server error'; - taskApi: TasksApi; - taskFormsApi: TaskFormsApi; - modelsApi: ModelsApi; - editorApi: FormModelsApi; - processDefinitionsApi: ProcessDefinitionsApi; - processInstancesApi: ProcessInstancesApi; - processInstanceVariablesApi: ProcessInstanceVariablesApi; - groupsApi: ActivitiGroupsApi; - usersApi: UsersApi; + _taskFormsApi: TaskFormsApi; + get taskFormsApi(): TaskFormsApi { + this._taskFormsApi = this._taskFormsApi ?? new TaskFormsApi(this.apiService.getInstance()); + return this._taskFormsApi; + } + + _taskApi: TasksApi; + get taskApi(): TasksApi { + this._taskApi = this._taskApi ?? new TasksApi(this.apiService.getInstance()); + return this._taskApi; + } + + _modelsApi: ModelsApi; + get modelsApi(): ModelsApi { + this._modelsApi = this._modelsApi ?? new ModelsApi(this.apiService.getInstance()); + return this._modelsApi; + } + + _editorApi: FormModelsApi; + get editorApi(): FormModelsApi { + this._editorApi = this._editorApi ?? new FormModelsApi(this.apiService.getInstance()); + return this._editorApi; + } + + _processDefinitionsApi: ProcessDefinitionsApi; + get processDefinitionsApi(): ProcessDefinitionsApi { + this._processDefinitionsApi = this._processDefinitionsApi ?? new ProcessDefinitionsApi(this.apiService.getInstance()); + return this._processDefinitionsApi; + } + + _processInstanceVariablesApi: ProcessInstanceVariablesApi; + get processInstanceVariablesApi(): ProcessInstanceVariablesApi { + this._processInstanceVariablesApi = this._processInstanceVariablesApi ?? new ProcessInstanceVariablesApi(this.apiService.getInstance()); + return this._processInstanceVariablesApi; + } + + _processInstancesApi: ProcessInstancesApi; + get processInstancesApi(): ProcessInstancesApi { + this._processInstancesApi = this._processInstancesApi ?? new ProcessInstancesApi(this.apiService.getInstance()); + return this._processInstancesApi; + } + + _groupsApi: ActivitiGroupsApi; + get groupsApi(): ActivitiGroupsApi { + this._groupsApi = this._groupsApi ?? new ActivitiGroupsApi(this.apiService.getInstance()); + return this._groupsApi; + } + + _usersApi: UsersApi; + get usersApi(): UsersApi { + this._usersApi = this._usersApi ?? new UsersApi(this.apiService.getInstance()); + return this._usersApi; + } formLoaded = new Subject(); formDataRefreshed = new Subject(); @@ -83,16 +127,6 @@ export class FormService { constructor(private ecmModelService: EcmModelService, private apiService: AlfrescoApiService, protected logService: LogService) { - - this.taskApi = new TasksApi(this.apiService.getInstance()); - this.modelsApi = new ModelsApi(this.apiService.getInstance()); - this.editorApi = new FormModelsApi(this.apiService.getInstance()); - this.processDefinitionsApi = new ProcessDefinitionsApi(this.apiService.getInstance()); - this.processInstanceVariablesApi = new ProcessInstanceVariablesApi(this.apiService.getInstance()); - this.processInstancesApi = new ProcessInstancesApi(this.apiService.getInstance()); - this.usersApi = new UsersApi(this.apiService.getInstance()); - this.groupsApi = new ActivitiGroupsApi(this.apiService.getInstance()); - this.taskFormsApi = new TaskFormsApi(this.apiService.getInstance()); } /** diff --git a/lib/core/form/services/process-content.service.ts b/lib/core/form/services/process-content.service.ts index 8e0f7a9525..add5b78353 100644 --- a/lib/core/form/services/process-content.service.ts +++ b/lib/core/form/services/process-content.service.ts @@ -30,11 +30,14 @@ export class ProcessContentService { static UNKNOWN_ERROR_MESSAGE: string = 'Unknown error'; static GENERIC_ERROR_MESSAGE: string = 'Server error'; - private contentApi: ActivitiContentApi; + _contentApi: ActivitiContentApi; + get contentApi(): ActivitiContentApi { + this._contentApi = this._contentApi ?? new ActivitiContentApi(this.apiService.getInstance()); + return this._contentApi; + } constructor(private apiService: AlfrescoApiService, private logService: LogService) { - this.contentApi = new ActivitiContentApi(this.apiService.getInstance()); } /** diff --git a/lib/core/form/services/widget-visibility.service.ts b/lib/core/form/services/widget-visibility.service.ts index d9078b3ddd..33a5f02742 100644 --- a/lib/core/form/services/widget-visibility.service.ts +++ b/lib/core/form/services/widget-visibility.service.ts @@ -37,13 +37,17 @@ import { TaskFormsApi } from '@alfresco/js-api'; }) export class WidgetVisibilityService { - private taskFormsApi: TaskFormsApi; + _taskFormsApi: TaskFormsApi; + get taskFormsApi(): TaskFormsApi { + this._taskFormsApi = this._taskFormsApi ?? new TaskFormsApi(this.apiService.getInstance()); + return this._taskFormsApi; + } + private processVarList: TaskProcessVariableModel[]; private form: FormModel; constructor(private apiService: AlfrescoApiService, private logService: LogService) { - this.taskFormsApi = new TaskFormsApi(this.apiService.getInstance()); } public refreshVisibility(form: FormModel, processVarList?: TaskProcessVariableModel[]) { diff --git a/lib/core/services/apps-process.service.ts b/lib/core/services/apps-process.service.ts index 0f3c62e55f..acc1124c6b 100644 --- a/lib/core/services/apps-process.service.ts +++ b/lib/core/services/apps-process.service.ts @@ -27,11 +27,14 @@ import { map, catchError } from 'rxjs/operators'; }) export class AppsProcessService { - appsApi: RuntimeAppDefinitionsApi; + _appsApi: RuntimeAppDefinitionsApi; + get appsApi(): RuntimeAppDefinitionsApi { + this._appsApi = this._appsApi ?? new RuntimeAppDefinitionsApi(this.apiService.getInstance()); + return this._appsApi; + } constructor(private apiService: AlfrescoApiService, private logService: LogService) { - this.appsApi = new RuntimeAppDefinitionsApi(this.apiService.getInstance()); } /** diff --git a/lib/core/services/authentication.service.ts b/lib/core/services/authentication.service.ts index 59623b7b07..8494de54b8 100644 --- a/lib/core/services/authentication.service.ts +++ b/lib/core/services/authentication.service.ts @@ -48,7 +48,11 @@ export class AuthenticationService { */ onLogout: ReplaySubject = new ReplaySubject(1); - private profileApi: UserProfileApi; + _profileApi: UserProfileApi; + get profileApi(): UserProfileApi { + this._profileApi = this._profileApi ?? new UserProfileApi(this.alfrescoApi.getInstance()); + return this._profileApi; + } constructor( private appConfig: AppConfigService, @@ -58,7 +62,6 @@ export class AuthenticationService { private logService: LogService) { this.alfrescoApi.alfrescoApiInitialized.subscribe(() => { this.alfrescoApi.getInstance().reply('logged-in', () => { - this.profileApi = new UserProfileApi(alfrescoApi.getInstance()); this.onLogin.next(); }); }); diff --git a/lib/core/services/bpm-user.service.ts b/lib/core/services/bpm-user.service.ts index 5197d08aa7..57969e6ef5 100644 --- a/lib/core/services/bpm-user.service.ts +++ b/lib/core/services/bpm-user.service.ts @@ -33,11 +33,14 @@ import { UserProfileApi, UserRepresentation } from '@alfresco/js-api'; }) export class BpmUserService { - private profileApi: UserProfileApi; + _profileApi: UserProfileApi; + get profileApi(): UserProfileApi { + this._profileApi = this._profileApi ?? new UserProfileApi(this.apiService.getInstance()); + return this._profileApi; + } constructor(private apiService: AlfrescoApiService, private logService: LogService) { - this.profileApi = new UserProfileApi(this.apiService.getInstance()); } /** diff --git a/lib/core/services/comment-content.service.ts b/lib/core/services/comment-content.service.ts index c74983b2f0..fdef4763aa 100644 --- a/lib/core/services/comment-content.service.ts +++ b/lib/core/services/comment-content.service.ts @@ -28,11 +28,14 @@ import { CommentEntry, CommentsApi } from '@alfresco/js-api'; }) export class CommentContentService { - private commentsApi: CommentsApi; + _commentsApi: CommentsApi; + get commentsApi(): CommentsApi { + this._commentsApi = this._commentsApi ?? new CommentsApi(this.apiService.getInstance()); + return this._commentsApi; + } constructor(private apiService: AlfrescoApiService, private logService: LogService) { - this.commentsApi = new CommentsApi(this.apiService.getInstance()); } /** @@ -42,7 +45,7 @@ export class CommentContentService { * @returns Details of the comment added */ addNodeComment(nodeId: string, message: string): Observable { - return from(this.commentsApi.createComment(nodeId, {content: message})) + return from(this.commentsApi.createComment(nodeId, { content: message })) .pipe( map((response: CommentEntry) => { return new CommentModel({ diff --git a/lib/core/services/comment-process.service.ts b/lib/core/services/comment-process.service.ts index cc65df6701..1a132c2b0d 100644 --- a/lib/core/services/comment-process.service.ts +++ b/lib/core/services/comment-process.service.ts @@ -29,11 +29,14 @@ import { ActivitiCommentsApi } from '@alfresco/js-api'; }) export class CommentProcessService { - private commentsApi: ActivitiCommentsApi; + _commentsApi: ActivitiCommentsApi; + get commentsApi(): ActivitiCommentsApi { + this._commentsApi = this._commentsApi ?? new ActivitiCommentsApi(this.apiService.getInstance()); + return this._commentsApi; + } constructor(private apiService: AlfrescoApiService, private logService: LogService) { - this.commentsApi = new ActivitiCommentsApi(this.apiService.getInstance()); } /** diff --git a/lib/core/services/content.service.ts b/lib/core/services/content.service.ts index 5ae5f8c081..cf8aa641dc 100644 --- a/lib/core/services/content.service.ts +++ b/lib/core/services/content.service.ts @@ -38,8 +38,17 @@ export class ContentService { folderCreate: Subject = new Subject(); folderEdit: Subject = new Subject(); - private contentApi: ContentApi; - private nodesApi: NodesApi; + _contentApi: ContentApi; + get contentApi(): ContentApi { + this._contentApi = this._contentApi ?? new ContentApi(this.apiService.getInstance()); + return this._contentApi; + } + + _nodesApi: NodesApi; + get nodesApi(): NodesApi { + this._nodesApi = this._nodesApi ?? new NodesApi(this.apiService.getInstance()); + return this._nodesApi; + } constructor(public authService: AuthenticationService, public apiService: AlfrescoApiService, @@ -47,8 +56,6 @@ export class ContentService { private sanitizer: DomSanitizer, private downloadService: DownloadService, private thumbnailService: ThumbnailService) { - this.contentApi = new ContentApi(apiService.getInstance()); - this.nodesApi = new NodesApi(apiService.getInstance()); } /** diff --git a/lib/core/services/deleted-nodes-api.service.ts b/lib/core/services/deleted-nodes-api.service.ts index ade5e39e58..35465c34b2 100644 --- a/lib/core/services/deleted-nodes-api.service.ts +++ b/lib/core/services/deleted-nodes-api.service.ts @@ -28,15 +28,22 @@ import { catchError } from 'rxjs/operators'; }) export class DeletedNodesApiService { - nodesApi: NodesApi; - trashcanApi: TrashcanApi; + _nodesApi: NodesApi; + get nodesApi(): NodesApi { + this._nodesApi = this._nodesApi ?? new NodesApi(this.apiService.getInstance()); + return this._nodesApi; + } + + _trashcanApi: TrashcanApi; + get trashcanApi(): TrashcanApi { + this._trashcanApi = this._trashcanApi ?? new TrashcanApi(this.apiService.getInstance()); + return this._trashcanApi; + } constructor( private apiService: AlfrescoApiService, private preferences: UserPreferencesService ) { - this.nodesApi = new NodesApi(this.apiService.getInstance()); - this.trashcanApi = new TrashcanApi(this.apiService.getInstance()); } /** diff --git a/lib/core/services/download-zip.service.ts b/lib/core/services/download-zip.service.ts index 021830507d..aad1cb86e0 100755 --- a/lib/core/services/download-zip.service.ts +++ b/lib/core/services/download-zip.service.ts @@ -27,11 +27,14 @@ import { catchError } from 'rxjs/operators'; }) export class DownloadZipService { - downloadsApi: DownloadsApi; + _downloadsApi: DownloadsApi; + get downloadsApi(): DownloadsApi { + this._downloadsApi = this._downloadsApi ?? new DownloadsApi(this.apiService.getInstance()); + return this._downloadsApi; + } constructor(private apiService: AlfrescoApiService, private logService: LogService) { - this.downloadsApi = new DownloadsApi(this.apiService.getInstance()); } /** diff --git a/lib/core/services/ecm-user.service.ts b/lib/core/services/ecm-user.service.ts index c60272f056..f065542146 100644 --- a/lib/core/services/ecm-user.service.ts +++ b/lib/core/services/ecm-user.service.ts @@ -28,16 +28,16 @@ import { PeopleApi } from '@alfresco/js-api'; }) export class EcmUserService { - private _peopleApi: PeopleApi; + _peopleApi: PeopleApi; + get peopleApi(): PeopleApi { + this._peopleApi = this._peopleApi ?? new PeopleApi(this.apiService.getInstance()); + return this._peopleApi; + } constructor(private apiService: AlfrescoApiService, private contentService: ContentService) { } - get peopleApi(): PeopleApi { - return this._peopleApi || (this._peopleApi = new PeopleApi(this.apiService.getInstance())); - } - /** * Gets information about a user identified by their username. * @param userName Target username diff --git a/lib/core/services/external-alfresco-api.service.ts b/lib/core/services/external-alfresco-api.service.ts index bad530f739..da933313a4 100644 --- a/lib/core/services/external-alfresco-api.service.ts +++ b/lib/core/services/external-alfresco-api.service.ts @@ -19,8 +19,7 @@ import { Injectable } from '@angular/core'; import { AlfrescoApiCompatibility, ContentApi, - Core, - Node + Node, NodesApi } from '@alfresco/js-api'; import { ReplaySubject, Subject } from 'rxjs'; @@ -37,6 +36,7 @@ export class ExternalAlfrescoApiService { alfrescoApiInitialized: ReplaySubject = new ReplaySubject(1); protected alfrescoApi: AlfrescoApiCompatibility; + _nodesApi: NodesApi; getInstance(): AlfrescoApiCompatibility { return this.alfrescoApi; @@ -46,8 +46,9 @@ export class ExternalAlfrescoApiService { return this.getInstance().content; } - get nodesApi(): Core.NodesApi { - return this.getInstance().nodes; + get nodesApi(): NodesApi { + this._nodesApi = this._nodesApi ?? new NodesApi(this.getInstance()); + return this._nodesApi; } init(ecmHost: string, contextRoot: string) { diff --git a/lib/core/services/favorites-api.service.ts b/lib/core/services/favorites-api.service.ts index 803ee3ce31..88a16d2bd2 100644 --- a/lib/core/services/favorites-api.service.ts +++ b/lib/core/services/favorites-api.service.ts @@ -27,7 +27,11 @@ import { catchError } from 'rxjs/operators'; }) export class FavoritesApiService { - private favoritesApi: FavoritesApi; + _favoritesApi: FavoritesApi; + get favoritesApi(): FavoritesApi { + this._favoritesApi = this._favoritesApi ?? new FavoritesApi(this.apiService.getInstance()); + return this._favoritesApi; + } static remapEntry({ entry }: any): any { entry.properties = { @@ -42,7 +46,6 @@ export class FavoritesApiService { private apiService: AlfrescoApiService, private preferences: UserPreferencesService ) { - this.favoritesApi = new FavoritesApi(this.apiService.getInstance()); } remapFavoritesData(data: FavoritePaging = {}): NodePaging { diff --git a/lib/core/services/nodes-api.service.ts b/lib/core/services/nodes-api.service.ts index 3a21b4b0f8..076a85f3ff 100644 --- a/lib/core/services/nodes-api.service.ts +++ b/lib/core/services/nodes-api.service.ts @@ -28,13 +28,20 @@ import { NodeMetadata } from '../models/node-metadata.model'; }) export class NodesApiService { - private nodesApi: NodesApi; - private trashcanApi: TrashcanApi; + _trashcanApi: TrashcanApi; + get trashcanApi(): TrashcanApi { + this._trashcanApi = this._trashcanApi ?? new TrashcanApi(this.apiService.getInstance()); + return this._trashcanApi; + } + + _nodesApi: NodesApi; + get nodesApi(): NodesApi { + this._nodesApi = this._nodesApi ?? new NodesApi(this.apiService.getInstance()); + return this._nodesApi; + } constructor(private apiService: AlfrescoApiService, private preferences: UserPreferencesService) { - this.nodesApi = new NodesApi(this.apiService.getInstance()); - this.trashcanApi = new TrashcanApi(this.apiService.getInstance()); } private getEntryFromEntity(entity: NodeEntry) { diff --git a/lib/core/services/people-content.service.ts b/lib/core/services/people-content.service.ts index 8ed58c74db..5c4de985e5 100644 --- a/lib/core/services/people-content.service.ts +++ b/lib/core/services/people-content.service.ts @@ -50,10 +50,13 @@ export class PeopleContentService { private hasContentAdminRole: boolean = false; hasCheckedIsContentAdmin: boolean = false; - private peopleApi: PeopleApi; + _peopleApi: PeopleApi; + get peopleApi(): PeopleApi { + this._peopleApi = this._peopleApi ?? new PeopleApi(this.apiService.getInstance()); + return this._peopleApi; + } constructor(private apiService: AlfrescoApiService, private logService: LogService) { - this.peopleApi = new PeopleApi(this.apiService.getInstance()); } /** @@ -124,7 +127,7 @@ export class PeopleContentService { } private buildOrderArray(sorting: PeopleContentSortingModel): string[] { - return sorting?.orderBy && sorting?.direction ? [ `${sorting.orderBy} ${sorting.direction.toUpperCase()}` ] : []; + return sorting?.orderBy && sorting?.direction ? [`${sorting.orderBy} ${sorting.direction.toUpperCase()}`] : []; } private handleError(error: any) { diff --git a/lib/core/services/people-process.service.ts b/lib/core/services/people-process.service.ts index ae9bd57711..92b396cdaf 100644 --- a/lib/core/services/people-process.service.ts +++ b/lib/core/services/people-process.service.ts @@ -21,20 +21,31 @@ import { UserProcessModel } from '../models/user-process.model'; import { AlfrescoApiService } from './alfresco-api.service'; import { LogService } from './log.service'; import { catchError, map } from 'rxjs/operators'; -import { TaskActionsApi, UsersApi, ResultListDataRepresentationLightUserRepresentation } from '@alfresco/js-api'; +import { + TaskActionsApi, + UsersApi, + ResultListDataRepresentationLightUserRepresentation +} from '@alfresco/js-api'; @Injectable({ providedIn: 'root' }) export class PeopleProcessService { - private taskActionsApi: TaskActionsApi; - private userApi: UsersApi; + _taskActionsApi: TaskActionsApi; + get taskActionsApi(): TaskActionsApi { + this._taskActionsApi = this._taskActionsApi ?? new TaskActionsApi(this.apiService.getInstance()); + return this._taskActionsApi; + } + + _userApi: UsersApi; + get userApi(): UsersApi { + this._userApi = this._userApi ?? new UsersApi(this.apiService.getInstance()); + return this._userApi; + } constructor(private apiService: AlfrescoApiService, private logService: LogService) { - this.taskActionsApi = new TaskActionsApi(this.apiService.getInstance()); - this.userApi = new UsersApi(this.apiService.getInstance()); } /** diff --git a/lib/core/services/renditions.service.ts b/lib/core/services/renditions.service.ts index fea5a3a482..c16b27be99 100644 --- a/lib/core/services/renditions.service.ts +++ b/lib/core/services/renditions.service.ts @@ -26,12 +26,19 @@ import { concatMap, switchMap, takeWhile, map } from 'rxjs/operators'; }) export class RenditionsService { - private renditionsApi: RenditionsApi; - private contentApi: ContentApi; + _renditionsApi: RenditionsApi; + get renditionsApi(): RenditionsApi { + this._renditionsApi = this._renditionsApi ?? new RenditionsApi(this.apiService.getInstance()); + return this._renditionsApi; + } + + _contentApi: ContentApi; + get contentApi(): ContentApi { + this._contentApi = this._contentApi ?? new ContentApi(this.apiService.getInstance()); + return this._contentApi; + } constructor(private apiService: AlfrescoApiService) { - this.renditionsApi = new RenditionsApi(this.apiService.getInstance()); - this.contentApi = new ContentApi(this.apiService.getInstance()); } /** diff --git a/lib/core/services/search.service.ts b/lib/core/services/search.service.ts index d69c90b877..9bba13c911 100644 --- a/lib/core/services/search.service.ts +++ b/lib/core/services/search.service.ts @@ -27,13 +27,21 @@ import { SearchConfigurationService } from './search-configuration.service'; export class SearchService { dataLoaded: Subject = new Subject(); - queriesApi: QueriesApi; - searchApi: SearchApi; + + _queriesApi: QueriesApi; + get queriesApi(): QueriesApi { + this._queriesApi = this._queriesApi ?? new QueriesApi(this.apiService.getInstance()); + return this._queriesApi; + } + + _searchApi: SearchApi; + get searchApi(): SearchApi { + this._searchApi = this._searchApi ?? new SearchApi(this.apiService.getInstance()); + return this._searchApi; + } constructor(private apiService: AlfrescoApiService, private searchConfigurationService: SearchConfigurationService) { - this.queriesApi = new QueriesApi(this.apiService.getInstance()); - this.searchApi = new SearchApi(this.apiService.getInstance()); } /** diff --git a/lib/core/services/shared-links-api.service.ts b/lib/core/services/shared-links-api.service.ts index 7f62c03be1..3936e23174 100644 --- a/lib/core/services/shared-links-api.service.ts +++ b/lib/core/services/shared-links-api.service.ts @@ -28,11 +28,15 @@ import { catchError } from 'rxjs/operators'; export class SharedLinksApiService { error = new Subject<{ statusCode: number, message: string }>(); - private sharedLinksApi: SharedlinksApi; + + _sharedLinksApi: SharedlinksApi; + get sharedLinksApi(): SharedlinksApi { + this._sharedLinksApi = this._sharedLinksApi ?? new SharedlinksApi(this.apiService.getInstance()); + return this._sharedLinksApi; + } constructor(private apiService: AlfrescoApiService, private preferences: UserPreferencesService) { - this.sharedLinksApi = new SharedlinksApi(this.apiService.getInstance()); } /** diff --git a/lib/core/services/sites.service.ts b/lib/core/services/sites.service.ts index bc94a44b93..85eb25557f 100644 --- a/lib/core/services/sites.service.ts +++ b/lib/core/services/sites.service.ts @@ -40,10 +40,13 @@ import { LogService } from './log.service'; }) export class SitesService { - private sitesApi: SitesApi; + _sitesApi: SitesApi; + get sitesApi(): SitesApi { + this._sitesApi = this._sitesApi ?? new SitesApi(this.apiService.getInstance()); + return this._sitesApi; + } constructor(private apiService: AlfrescoApiService, private logService: LogService) { - this.sitesApi = new SitesApi(this.apiService.getInstance()); } /** diff --git a/lib/core/services/thumbnail.service.ts b/lib/core/services/thumbnail.service.ts index a57b04423e..040441c44b 100644 --- a/lib/core/services/thumbnail.service.ts +++ b/lib/core/services/thumbnail.service.ts @@ -164,10 +164,13 @@ export class ThumbnailService { 'task': './assets/images/task.svg' }; - private contentApi: ContentApi; + _contentApi: ContentApi; + get contentApi(): ContentApi { + this._contentApi = this._contentApi ?? new ContentApi(this.apiService.getInstance()); + return this._contentApi; + } constructor(protected apiService: AlfrescoApiService, matIconRegistry: MatIconRegistry, sanitizer: DomSanitizer) { - this.contentApi = new ContentApi(apiService.getInstance()); Object.keys(this.mimeTypeIcons).forEach((key) => { const url = sanitizer.bypassSecurityTrustResourceUrl(this.mimeTypeIcons[key]); diff --git a/lib/core/services/upload.service.ts b/lib/core/services/upload.service.ts index d1de1d4664..699c974c21 100644 --- a/lib/core/services/upload.service.ts +++ b/lib/core/services/upload.service.ts @@ -63,9 +63,23 @@ export class UploadService { fileUploadDeleted: Subject = new Subject(); fileDeleted: Subject = new Subject(); - private uploadApi: UploadApi; - private nodesApi: NodesApi; - private versionsApi: VersionsApi; + _uploadApi: UploadApi; + get uploadApi(): UploadApi { + this._uploadApi = this._uploadApi ?? new UploadApi(this.apiService.getInstance()); + return this._uploadApi; + } + + _nodesApi: NodesApi; + get nodesApi(): NodesApi { + this._nodesApi = this._nodesApi ?? new NodesApi(this.apiService.getInstance()); + return this._nodesApi; + } + + _versionsApi: VersionsApi; + get versionsApi(): VersionsApi { + this._versionsApi = this._versionsApi ?? new VersionsApi(this.apiService.getInstance()); + return this._versionsApi; + } constructor( protected apiService: AlfrescoApiService, @@ -76,10 +90,6 @@ export class UploadService { .subscribe(({ status }) => { this.isThumbnailGenerationEnabled = status.isThumbnailGenerationEnabled; }); - - this.uploadApi = new UploadApi(apiService.getInstance()); - this.nodesApi = new NodesApi(apiService.getInstance()); - this.versionsApi = new VersionsApi(apiService.getInstance()); } /** diff --git a/lib/core/viewer/components/viewer.component.ts b/lib/core/viewer/components/viewer.component.ts index e98c3b153e..26d3fb60c8 100644 --- a/lib/core/viewer/components/viewer.component.ts +++ b/lib/core/viewer/components/viewer.component.ts @@ -206,11 +206,11 @@ export class ViewerComponent implements OnChanges, OnInit, OnDestroy { /** Emitted when user clicks 'Navigate Before' ("<") button. */ @Output() - navigateBefore = new EventEmitter(); + navigateBefore = new EventEmitter(); /** Emitted when user clicks 'Navigate Next' (">") button. */ @Output() - navigateNext = new EventEmitter(); + navigateNext = new EventEmitter(); /** Emitted when the shared link used is not valid. */ @Output() @@ -257,10 +257,29 @@ export class ViewerComponent implements OnChanges, OnInit, OnDestroy { private shouldCloseViewer = true; private keyDown$ = fromEvent(document, 'keydown'); - private sharedLinksApi: SharedlinksApi; - private versionsApi: VersionsApi; - private nodesApi: NodesApi; - private contentApi: ContentApi; + _sharedLinksApi: SharedlinksApi; + get sharedLinksApi(): SharedlinksApi { + this._sharedLinksApi = this._sharedLinksApi ?? new SharedlinksApi(this.apiService.getInstance()); + return this._sharedLinksApi; + } + + _versionsApi: VersionsApi; + get versionsApi(): VersionsApi { + this._versionsApi = this._versionsApi ?? new VersionsApi(this.apiService.getInstance()); + return this._versionsApi; + } + + _nodesApi: NodesApi; + get nodesApi(): NodesApi { + this._nodesApi = this._nodesApi ?? new NodesApi(this.apiService.getInstance()); + return this._nodesApi; + } + + _contentApi: ContentApi; + get contentApi(): ContentApi { + this._contentApi = this._contentApi ?? new ContentApi(this.apiService.getInstance()); + return this._contentApi; + } constructor(private apiService: AlfrescoApiService, private viewUtilService: ViewUtilService, @@ -270,10 +289,6 @@ export class ViewerComponent implements OnChanges, OnInit, OnDestroy { private uploadService: UploadService, private el: ElementRef, public dialog: MatDialog) { - this.sharedLinksApi = new SharedlinksApi(this.apiService.getInstance()); - this.versionsApi = new VersionsApi(this.apiService.getInstance()); - this.nodesApi = new NodesApi(this.apiService.getInstance()); - this.contentApi = new ContentApi(this.apiService.getInstance()); viewUtilService.maxRetries = this.maxRetries; } @@ -563,11 +578,11 @@ export class ViewerComponent implements OnChanges, OnInit, OnDestroy { this.close(); } - onNavigateBeforeClick(event: MouseEvent|KeyboardEvent) { + onNavigateBeforeClick(event: MouseEvent | KeyboardEvent) { this.navigateBefore.next(event); } - onNavigateNextClick(event: MouseEvent|KeyboardEvent) { + onNavigateNextClick(event: MouseEvent | KeyboardEvent) { this.navigateNext.next(event); } @@ -754,7 +769,7 @@ export class ViewerComponent implements OnChanges, OnInit, OnDestroy { skipWhile(() => !this.overlayMode), filter((e: KeyboardEvent) => e.keyCode === 27), takeUntil(this.onDestroy$) - ).subscribe( (event: KeyboardEvent) => { + ).subscribe((event: KeyboardEvent) => { event.preventDefault(); if (this.shouldCloseViewer) { diff --git a/lib/core/viewer/services/view-util.service.ts b/lib/core/viewer/services/view-util.service.ts index 020d80babc..dd032c83c0 100644 --- a/lib/core/viewer/services/view-util.service.ts +++ b/lib/core/viewer/services/view-util.service.ts @@ -74,16 +74,27 @@ export class ViewUtilService { viewerTypeChange: Subject = new Subject(); urlFileContentChange: Subject = new Subject(); - renditionsApi: RenditionsApi; - contentApi: ContentApi; - versionsApi: VersionsApi; + _renditionsApi: RenditionsApi; + get renditionsApi(): RenditionsApi { + this._renditionsApi = this._renditionsApi ?? new RenditionsApi(this.apiService.getInstance()); + return this._renditionsApi; + } + + _contentApi: ContentApi; + get contentApi(): ContentApi { + this._contentApi = this._contentApi ?? new ContentApi(this.apiService.getInstance()); + return this._contentApi; + } + + _versionsApi: VersionsApi; + get versionsApi(): VersionsApi { + this._versionsApi = this._versionsApi ?? new VersionsApi(this.apiService.getInstance()); + return this._versionsApi; + } constructor(private apiService: AlfrescoApiService, private logService: LogService, private translateService: TranslationService) { - this.renditionsApi = new RenditionsApi(this.apiService.getInstance()); - this.contentApi = new ContentApi(this.apiService.getInstance()); - this.versionsApi = new VersionsApi(this.apiService.getInstance()); } /** diff --git a/lib/insights/src/lib/analytics-process/services/analytics.service.ts b/lib/insights/src/lib/analytics-process/services/analytics.service.ts index f7cf153418..fc89bf1241 100644 --- a/lib/insights/src/lib/analytics-process/services/analytics.service.ts +++ b/lib/insights/src/lib/analytics-process/services/analytics.service.ts @@ -33,13 +33,20 @@ import { ProcessDefinitionsApi, ReportApi } from '@alfresco/js-api'; @Injectable({ providedIn: 'root' }) export class AnalyticsService { - reportApi: ReportApi; - processDefinitionsApi: ProcessDefinitionsApi; + _reportApi: ReportApi; + get reportApi(): ReportApi { + this._reportApi = this._reportApi ?? new ReportApi(this.apiService.getInstance()); + return this._reportApi; + } + + _processDefinitionsApi: ProcessDefinitionsApi; + get processDefinitionsApi(): ProcessDefinitionsApi { + this._processDefinitionsApi = this._processDefinitionsApi ?? new ProcessDefinitionsApi(this.apiService.getInstance()); + return this._processDefinitionsApi; + } constructor(private apiService: AlfrescoApiService, private logService: LogService) { - this.reportApi = new ReportApi(this.apiService.getInstance()); - this.processDefinitionsApi = new ProcessDefinitionsApi(this.apiService.getInstance()); } /** diff --git a/lib/insights/src/lib/diagram/services/diagrams.service.ts b/lib/insights/src/lib/diagram/services/diagrams.service.ts index 398bc5ecd1..cda71f842e 100644 --- a/lib/insights/src/lib/diagram/services/diagrams.service.ts +++ b/lib/insights/src/lib/diagram/services/diagrams.service.ts @@ -24,11 +24,14 @@ import { ModelJsonBpmnApi } from '@alfresco/js-api'; @Injectable({ providedIn: 'root' }) export class DiagramsService { - private modelJsonBpmnApi: ModelJsonBpmnApi; + _modelJsonBpmnApi: ModelJsonBpmnApi; + get modelJsonBpmnApi(): ModelJsonBpmnApi { + this._modelJsonBpmnApi = this._modelJsonBpmnApi ?? new ModelJsonBpmnApi(this.apiService.getInstance()); + return this._modelJsonBpmnApi; + } constructor(private apiService: AlfrescoApiService, private logService: LogService) { - this.modelJsonBpmnApi = new ModelJsonBpmnApi(this.apiService.getInstance()); } getProcessDefinitionModel(processDefinitionId: string): Observable { diff --git a/lib/process-services-cloud/src/lib/form/components/widgets/attach-file/attach-file-cloud-widget.component.ts b/lib/process-services-cloud/src/lib/form/components/widgets/attach-file/attach-file-cloud-widget.component.ts index 43f5136671..bc93acd1c2 100644 --- a/lib/process-services-cloud/src/lib/form/components/widgets/attach-file/attach-file-cloud-widget.component.ts +++ b/lib/process-services-cloud/src/lib/form/components/widgets/attach-file/attach-file-cloud-widget.component.ts @@ -67,7 +67,11 @@ export class AttachFileCloudWidgetComponent extends UploadCloudWidgetComponent i rootNodeId = AttachFileCloudWidgetComponent.ALIAS_USER_FOLDER; selectedNode: Node; - private nodesApi: NodesApi; + _nodesApi: NodesApi; + get nodesApi(): NodesApi { + this._nodesApi = this._nodesApi ?? new NodesApi(this.apiService.getInstance()); + return this._nodesApi; + } constructor( formService: FormService, @@ -81,7 +85,6 @@ export class AttachFileCloudWidgetComponent extends UploadCloudWidgetComponent i private contentNodeSelectorPanelService: ContentNodeSelectorPanelService ) { super(formService, thumbnails, processCloudContentService, notificationService, logger); - this.nodesApi = new NodesApi(this.apiService.getInstance()); } ngOnInit() { diff --git a/lib/process-services-cloud/src/lib/form/services/content-cloud-node-selector.service.ts b/lib/process-services-cloud/src/lib/form/services/content-cloud-node-selector.service.ts index 3f03e99446..8f43a9771a 100644 --- a/lib/process-services-cloud/src/lib/form/services/content-cloud-node-selector.service.ts +++ b/lib/process-services-cloud/src/lib/form/services/content-cloud-node-selector.service.ts @@ -31,14 +31,18 @@ import { Observable, Subject, throwError } from 'rxjs'; }) export class ContentCloudNodeSelectorService { - nodesApi: NodesApi; + _nodesApi: NodesApi; + get nodesApi(): NodesApi { + this._nodesApi = this._nodesApi ?? new NodesApi(this.apiService.getInstance()); + return this._nodesApi; + } + sourceNodeNotFound = false; constructor( private apiService: AlfrescoApiService, private notificationService: NotificationService, private dialog: MatDialog) { - this.nodesApi = new NodesApi(this.apiService.getInstance()); } openUploadFileDialog(currentFolderId?: string, selectionMode?: string, isAllFileSources?: boolean, restrictRootToCurrentFolderId?: boolean): Observable { diff --git a/lib/process-services-cloud/src/lib/form/services/form-cloud.service.ts b/lib/process-services-cloud/src/lib/form/services/form-cloud.service.ts index 3ed8e88e80..c1fe09769c 100644 --- a/lib/process-services-cloud/src/lib/form/services/form-cloud.service.ts +++ b/lib/process-services-cloud/src/lib/form/services/form-cloud.service.ts @@ -36,14 +36,17 @@ import { FormContent } from '../../services/form-fields.interfaces'; }) export class FormCloudService extends BaseCloudService { - uploadApi: UploadApi; + private _uploadApi; + get uploadApi(): UploadApi { + this._uploadApi = this._uploadApi ?? new UploadApi(this.apiService.getInstance()); + return this._uploadApi; + } constructor( apiService: AlfrescoApiService, appConfigService: AppConfigService ) { super(apiService, appConfigService); - this.uploadApi = new UploadApi(apiService.getInstance()); } /** diff --git a/lib/process-services-cloud/src/lib/form/services/process-cloud-content.service.ts b/lib/process-services-cloud/src/lib/form/services/process-cloud-content.service.ts index 86fb7256b0..307efd3480 100644 --- a/lib/process-services-cloud/src/lib/form/services/process-cloud-content.service.ts +++ b/lib/process-services-cloud/src/lib/form/services/process-cloud-content.service.ts @@ -31,8 +31,17 @@ import { AuthenticationApi, Node, UploadApi } from '@alfresco/js-api'; }) export class ProcessCloudContentService { - uploadApi: UploadApi; - authenticationApi: AuthenticationApi; + private _uploadApi; + get uploadApi(): UploadApi { + this._uploadApi = this._uploadApi ?? new UploadApi(this.apiService.getInstance()); + return this._uploadApi; + } + + private _authenticationApi; + get authenticationApi(): AuthenticationApi { + this._authenticationApi = this._authenticationApi ?? new AuthenticationApi(this.apiService.getInstance()); + return this._authenticationApi; + } constructor( private apiService: AlfrescoApiService, @@ -40,8 +49,6 @@ export class ProcessCloudContentService { public contentService: ContentService, private downloadService: DownloadService ) { - this.uploadApi = new UploadApi(this.apiService.getInstance()); - this.authenticationApi = new AuthenticationApi(this.apiService.getInstance()); } createTemporaryRawRelatedContent( diff --git a/lib/process-services/src/lib/process-list/services/process-filter.service.ts b/lib/process-services/src/lib/process-list/services/process-filter.service.ts index 04d8c93b47..4ccf4ceb42 100644 --- a/lib/process-services/src/lib/process-list/services/process-filter.service.ts +++ b/lib/process-services/src/lib/process-list/services/process-filter.service.ts @@ -20,17 +20,23 @@ import { Injectable } from '@angular/core'; import { Observable, from, forkJoin, throwError } from 'rxjs'; import { FilterProcessRepresentationModel } from '../models/filter-process.model'; import { map, catchError } from 'rxjs/operators'; -import { ResultListDataRepresentationUserProcessInstanceFilterRepresentation, UserFiltersApi } from '@alfresco/js-api'; +import { + ResultListDataRepresentationUserProcessInstanceFilterRepresentation, + UserFiltersApi +} from '@alfresco/js-api'; @Injectable({ providedIn: 'root' }) export class ProcessFilterService { - private userFiltersApi: UserFiltersApi; + private _userFiltersApi; + get userFiltersApi(): UserFiltersApi { + this._userFiltersApi = this._userFiltersApi ?? new UserFiltersApi(this.alfrescoApiService.getInstance()); + return this._userFiltersApi; + } constructor(private alfrescoApiService: AlfrescoApiService) { - this.userFiltersApi = new UserFiltersApi(this.alfrescoApiService.getInstance()); } /** diff --git a/lib/process-services/src/lib/process-list/services/process.service.ts b/lib/process-services/src/lib/process-list/services/process.service.ts index ac869a9a2b..194f97c0f5 100644 --- a/lib/process-services/src/lib/process-list/services/process.service.ts +++ b/lib/process-services/src/lib/process-list/services/process.service.ts @@ -42,16 +42,31 @@ declare let moment: any; }) export class ProcessService { - private processInstanceVariablesApi: ProcessInstanceVariablesApi; - private processInstancesApi: ProcessInstancesApi; - private processDefinitionsApi: ProcessDefinitionsApi; - private tasksApi: TasksApi; + private _tasksApi; + get tasksApi(): TasksApi { + this._tasksApi = this._tasksApi ?? new TasksApi(this.alfrescoApiService.getInstance()); + return this._tasksApi; + } + + private _processDefinitionsApi; + get processDefinitionsApi(): ProcessDefinitionsApi { + this._processDefinitionsApi = this._processDefinitionsApi ?? new ProcessDefinitionsApi(this.alfrescoApiService.getInstance()); + return this._processDefinitionsApi; + } + + private _processInstancesApi; + get processInstancesApi(): ProcessInstancesApi { + this._processInstancesApi = this._processInstancesApi ?? new ProcessInstancesApi(this.alfrescoApiService.getInstance()); + return this._processInstancesApi; + } + + private _processInstanceVariablesApi; + get processInstanceVariablesApi(): ProcessInstanceVariablesApi { + this._processInstanceVariablesApi = this._processInstanceVariablesApi ?? new ProcessInstanceVariablesApi(this.alfrescoApiService.getInstance()); + return this._processInstanceVariablesApi; + } constructor(private alfrescoApiService: AlfrescoApiService) { - this.processInstanceVariablesApi = new ProcessInstanceVariablesApi(this.alfrescoApiService.getInstance()); - this.processInstancesApi = new ProcessInstancesApi(this.alfrescoApiService.getInstance()); - this.processDefinitionsApi = new ProcessDefinitionsApi(this.alfrescoApiService.getInstance()); - this.tasksApi = new TasksApi(this.alfrescoApiService.getInstance()); } /** diff --git a/lib/process-services/src/lib/task-list/services/process-upload.service.ts b/lib/process-services/src/lib/task-list/services/process-upload.service.ts index c6de92e6eb..e8795428c2 100644 --- a/lib/process-services/src/lib/task-list/services/process-upload.service.ts +++ b/lib/process-services/src/lib/task-list/services/process-upload.service.ts @@ -25,11 +25,14 @@ import { throwError } from 'rxjs'; }) export class ProcessUploadService extends UploadService { - contentApi: ActivitiContentApi; + private _contentApi; + get contentApi(): ActivitiContentApi { + this._contentApi = this._contentApi ?? new ActivitiContentApi(this.apiService.getInstance()); + return this._contentApi; + } constructor(protected apiService: AlfrescoApiService, appConfigService: AppConfigService, discoveryApiService: DiscoveryApiService) { super(apiService, appConfigService, discoveryApiService); - this.contentApi = new ActivitiContentApi(apiService.getInstance()); } getUploadPromise(file: any): any { diff --git a/lib/process-services/src/lib/task-list/services/task-filter.service.ts b/lib/process-services/src/lib/task-list/services/task-filter.service.ts index ff5090b305..09f0243029 100644 --- a/lib/process-services/src/lib/task-list/services/task-filter.service.ts +++ b/lib/process-services/src/lib/task-list/services/task-filter.service.ts @@ -27,11 +27,14 @@ import { UserFiltersApi } from '@alfresco/js-api'; }) export class TaskFilterService { - private userFiltersApi: UserFiltersApi; + private _userFiltersApi; + get userFiltersApi(): UserFiltersApi { + this._userFiltersApi = this._userFiltersApi ?? new UserFiltersApi(this.apiService.getInstance()); + return this._userFiltersApi; + } constructor(private apiService: AlfrescoApiService, private logService: LogService) { - this.userFiltersApi = new UserFiltersApi(this.apiService.getInstance()); } /** diff --git a/lib/process-services/src/lib/task-list/services/task-upload.service.ts b/lib/process-services/src/lib/task-list/services/task-upload.service.ts index 525da9236c..8ef0e50b4a 100644 --- a/lib/process-services/src/lib/task-list/services/task-upload.service.ts +++ b/lib/process-services/src/lib/task-list/services/task-upload.service.ts @@ -25,11 +25,14 @@ import { ActivitiContentApi } from '@alfresco/js-api'; }) export class TaskUploadService extends UploadService { - private contentApi: ActivitiContentApi; + private _contentApi; + get contentApi(): ActivitiContentApi { + this._contentApi = this._contentApi ?? new ActivitiContentApi(this.apiService.getInstance()); + return this._contentApi; + } constructor(protected apiService: AlfrescoApiService, appConfigService: AppConfigService, discoveryApiService: DiscoveryApiService) { super(apiService, appConfigService, discoveryApiService); - this.contentApi = new ActivitiContentApi(apiService.getInstance()); } getUploadPromise(file: any): any { diff --git a/lib/process-services/src/lib/task-list/services/tasklist.service.ts b/lib/process-services/src/lib/task-list/services/tasklist.service.ts index 03fe3ef0b2..1cee96d1ec 100644 --- a/lib/process-services/src/lib/task-list/services/tasklist.service.ts +++ b/lib/process-services/src/lib/task-list/services/tasklist.service.ts @@ -34,17 +34,32 @@ import { }) export class TaskListService { - private modelsApi: ModelsApi; - private tasksApi: TasksApi; - private taskActionsApi: TaskActionsApi; - private checklistsApi: ChecklistsApi; + private _modelsApi; + get modelsApi(): ModelsApi { + this._modelsApi = this._modelsApi ?? new ModelsApi(this.apiService.getInstance()); + return this._modelsApi; + } + + private _tasksApi; + get tasksApi(): TasksApi { + this._tasksApi = this._tasksApi ?? new TasksApi(this.apiService.getInstance()); + return this._tasksApi; + } + + private _taskActionsApi; + get taskActionsApi(): TaskActionsApi { + this._taskActionsApi = this._taskActionsApi ?? new TaskActionsApi(this.apiService.getInstance()); + return this._taskActionsApi; + } + + private _checklistsApi; + get checklistsApi(): ChecklistsApi { + this._checklistsApi = this._checklistsApi ?? new ChecklistsApi(this.apiService.getInstance()); + return this._checklistsApi; + } constructor(private apiService: AlfrescoApiService, private logService: LogService) { - this.modelsApi = new ModelsApi(this.apiService.getInstance()); - this.taskActionsApi = new TaskActionsApi(this.apiService.getInstance()); - this.tasksApi = new TasksApi(this.apiService.getInstance()); - this.checklistsApi = new ChecklistsApi(this.apiService.getInstance()); } /**