diff --git a/src/app/components/page.component.spec.ts b/src/app/components/page.component.spec.ts index 7074a2779..481ba39eb 100644 --- a/src/app/components/page.component.spec.ts +++ b/src/app/components/page.component.spec.ts @@ -298,4 +298,52 @@ describe('PageComponent', () => { expect(component.nodeHasPermission(node, 'some-operation')).toBe(false); }); }); + + describe('canDeleteShared()', () => { + it('should return true if shared node can be deleted', () => { + const selection = [ { entry: { + allowableOperationsOnTarget: ['delete'] + } } ]; + + expect(component.canDeleteShared(selection)).toBe(true); + }); + + it(`should return false if shared node doesn't have permission`, () => { + const selection = [ { entry: { + allowableOperationsOnTarget: ['something'] + } } ]; + + expect(component.canDeleteShared(selection)).toBe(false); + }); + + it(`should return false if shared node doesn't have permissions property`, () => { + const selection = [ { entry: { } } ]; + + expect(component.canDeleteShared(selection)).toBe(false); + }); + }); + + describe('canMoveShared()', () => { + it('should return true if shared node can be moved', () => { + const selection = [ { entry: { + allowableOperationsOnTarget: ['delete'] + } } ]; + + expect(component.canMoveShared(selection)).toBe(true); + }); + + it(`should return false if shared node doesn't have permission`, () => { + const selection = [ { entry: { + allowableOperationsOnTarget: ['something'] + } } ]; + + expect(component.canMoveShared(selection)).toBe(false); + }); + + it(`should return false if shared node doesn't have permissions property`, () => { + const selection = [ { entry: { } } ]; + + expect(component.canMoveShared(selection)).toBe(false); + }); + }); }); diff --git a/src/app/components/page.component.ts b/src/app/components/page.component.ts index a2dd2536e..e4011e6a9 100644 --- a/src/app/components/page.component.ts +++ b/src/app/components/page.component.ts @@ -111,10 +111,18 @@ export abstract class PageComponent { return selection.every(node => node.entry && this.nodeHasPermission(node.entry, 'delete')); } + canDeleteShared(selection: Array = []): boolean { + return selection.every(node => node.entry && this.nodeSharedHasPermission(node.entry, 'delete')); + } + canMove(selection: Array): boolean { return this.canDelete(selection); } + canMoveShared(selection: Array = []): boolean { + return selection.every(node => node.entry && this.nodeSharedHasPermission(node.entry, 'delete')); + } + canPreviewFile(selection: Array): boolean { return this.isFileSelected(selection); } @@ -127,7 +135,7 @@ export abstract class PageComponent { return this.isFileSelected(selection); } - nodeHasPermission(node: MinimalNodeEntryEntity, permission: string) { + nodeHasPermission(node: MinimalNodeEntryEntity, permission: string): boolean { if (node && permission) { const { allowableOperations = [] } = (node || {}); @@ -139,6 +147,18 @@ export abstract class PageComponent { return false; } + nodeSharedHasPermission(node: MinimalNodeEntryEntity, permission: string): boolean { + if (node && permission) { + const { allowableOperationsOnTarget } = (node || {}); + + if (allowableOperationsOnTarget && allowableOperationsOnTarget.indexOf(permission) > -1) { + return true; + } + } + + return false; + } + onChangePageSize(event: Pagination): void { this.preferences.paginationSize = event.maxItems; } diff --git a/src/app/components/shared-files/shared-files.component.html b/src/app/components/shared-files/shared-files.component.html index a7888c6b1..73b88c32b 100644 --- a/src/app/components/shared-files/shared-files.component.html +++ b/src/app/components/shared-files/shared-files.component.html @@ -50,7 +50,7 @@