diff --git a/src/app/services/create-file-from-template.service.spec.ts b/src/app/services/create-file-from-template.service.spec.ts index 70e7c89be..bcf7626e9 100644 --- a/src/app/services/create-file-from-template.service.spec.ts +++ b/src/app/services/create-file-from-template.service.spec.ts @@ -153,4 +153,52 @@ describe('CreateFileFromTemplateService', () => { new SnackbarErrorAction('APP.MESSAGES.ERRORS.GENERIC') ); })); + + it('should return true if row is not a `link` nodeType', () => { + spyOn( + alfrescoApiService.getInstance().nodes, + 'getNodeInfo' + ).and.returnValue( + of({ + id: 'templates-folder-id', + path: { + elements: [], + name: '/Company Home/Data Dictionary' + } + }) + ); + spyOn(dialog, 'open'); + + createFileFromTemplateService.openTemplatesDialog(); + + expect( + dialog.open['calls'].argsFor(0)[1].data.rowFilter({ + node: { entry: { nodeType: 'text' } } + }) + ).toBe(true); + }); + + it('should return false if row is a `link` nodeType', () => { + spyOn( + alfrescoApiService.getInstance().nodes, + 'getNodeInfo' + ).and.returnValue( + of({ + id: 'templates-folder-id', + path: { + elements: [], + name: '/Company Home/Data Dictionary' + } + }) + ); + spyOn(dialog, 'open'); + + createFileFromTemplateService.openTemplatesDialog(); + + expect( + dialog.open['calls'].argsFor(0)[1].data.rowFilter({ + node: { entry: { nodeType: 'app:filelink' } } + }) + ).toBe(false); + }); }); diff --git a/src/app/services/create-file-from-template.service.ts b/src/app/services/create-file-from-template.service.ts index f9a8d8790..f99a7cb54 100644 --- a/src/app/services/create-file-from-template.service.ts +++ b/src/app/services/create-file-from-template.service.ts @@ -27,14 +27,15 @@ import { Injectable } from '@angular/core'; import { MatDialog, MatDialogConfig, MatDialogRef } from '@angular/material'; import { CreateFileFromTemplateDialogComponent } from '../dialogs/node-templates/create-from-template.dialog'; import { Subject, from, of } from 'rxjs'; -import { Node, MinimalNode } from '@alfresco/js-api'; +import { Node, MinimalNode, MinimalNodeEntryEntity } from '@alfresco/js-api'; import { AlfrescoApiService, TranslationService } from '@alfresco/adf-core'; import { switchMap, catchError } from 'rxjs/operators'; import { Store } from '@ngrx/store'; import { AppStore, SnackbarErrorAction } from '@alfresco/aca-shared/store'; import { ContentNodeSelectorComponent, - ContentNodeSelectorComponentData + ContentNodeSelectorComponentData, + ShareDataRow } from '@alfresco/adf-content-services'; @Injectable({ @@ -62,7 +63,8 @@ export class CreateFileFromTemplateService { dropdownSiteList: null, breadcrumbTransform: this.transformNode.bind(this), select, - isSelectionValid: this.isSelectionValid.bind(this) + isSelectionValid: this.isSelectionValid.bind(this), + rowFilter: this.rowFilter.bind(this) }; from( @@ -131,4 +133,9 @@ export class CreateFileFromTemplateService { private get title() { return this.translation.instant('NODE_SELECTOR.SELECT_TEMPLATE_TITLE'); } + + private rowFilter(row: ShareDataRow): boolean { + const node: MinimalNodeEntryEntity = row.node.entry; + return node.nodeType !== 'app:filelink'; + } }