diff --git a/apps/web/src/app/vault/components/vault-items/vault-items.component.html b/apps/web/src/app/vault/components/vault-items/vault-items.component.html index 2d0d047aa23..7430bbdbc87 100644 --- a/apps/web/src/app/vault/components/vault-items/vault-items.component.html +++ b/apps/web/src/app/vault/components/vault-items/vault-items.component.html @@ -80,7 +80,7 @@ [showGroups]="showGroups" [organizations]="allOrganizations" [groups]="allGroups" - [canDeleteCollection]="canDeleteCollection(item.collection) | async" + [canDeleteCollection]="canDeleteCollection(item.collection)" [canEditCollection]="canEditCollection(item.collection)" [checked]="selection.isSelected(item)" (checkedToggled)="selection.toggle(item)" diff --git a/apps/web/src/app/vault/components/vault-items/vault-items.component.ts b/apps/web/src/app/vault/components/vault-items/vault-items.component.ts index 3c667c84141..11da889112c 100644 --- a/apps/web/src/app/vault/components/vault-items/vault-items.component.ts +++ b/apps/web/src/app/vault/components/vault-items/vault-items.component.ts @@ -2,6 +2,7 @@ import { SelectionModel } from "@angular/cdk/collections"; import { Component, EventEmitter, Input, Output } from "@angular/core"; import { Organization } from "@bitwarden/common/admin-console/models/domain/organization"; +import { FeatureFlag } from "@bitwarden/common/enums/feature-flag.enum"; import { ConfigServiceAbstraction } from "@bitwarden/common/platform/abstractions/config/config.service.abstraction"; import { CipherView } from "@bitwarden/common/vault/models/view/cipher.view"; import { CollectionView } from "@bitwarden/common/vault/models/view/collection.view"; @@ -28,6 +29,8 @@ const MaxSelectionCount = 500; export class VaultItemsComponent { protected RowHeight = RowHeight; + private flexibleCollectionsEnabled: boolean; + @Input() disabled: boolean; @Input() showOwner: boolean; @Input() showCollections: boolean; @@ -70,6 +73,12 @@ export class VaultItemsComponent { constructor(private configService: ConfigServiceAbstraction) {} + async ngOnInit() { + this.flexibleCollectionsEnabled = await this.configService.getFeatureFlag( + FeatureFlag.FlexibleCollections + ); + } + get showExtraColumn() { return this.showCollections || this.showGroups || this.showOwner; } @@ -100,14 +109,14 @@ export class VaultItemsComponent { return collection.canEdit(organization); } - protected async canDeleteCollection(collection: CollectionView): Promise { + protected canDeleteCollection(collection: CollectionView): boolean { // Only allow allow deletion if collection editing is enabled and not deleting "Unassigned" if (collection.id === Unassigned) { return false; } const organization = this.allOrganizations.find((o) => o.id === collection.organizationId); - return await collection.canDelete(organization, this.configService); + return collection.canDelete(organization, this.flexibleCollectionsEnabled); } protected toggleAll() { diff --git a/apps/web/src/app/vault/core/views/collection-admin.view.ts b/apps/web/src/app/vault/core/views/collection-admin.view.ts index 6ed82794930..f773fbc4934 100644 --- a/apps/web/src/app/vault/core/views/collection-admin.view.ts +++ b/apps/web/src/app/vault/core/views/collection-admin.view.ts @@ -1,6 +1,4 @@ import { Organization } from "@bitwarden/common/admin-console/models/domain/organization"; -import { FeatureFlag } from "@bitwarden/common/enums/feature-flag.enum"; -import { ConfigServiceAbstraction } from "@bitwarden/common/platform/abstractions/config/config.service.abstraction"; import { CollectionAccessDetailsResponse } from "@bitwarden/common/src/vault/models/response/collection.response"; import { CollectionView } from "@bitwarden/common/vault/models/view/collection.view"; @@ -37,11 +35,8 @@ export class CollectionAdminView extends CollectionView { return org?.canEditAnyCollection || (org?.canEditAssignedCollections && this.assigned); } - override async canDelete( - org: Organization, - configService: ConfigServiceAbstraction - ): Promise { - if (await configService.getFeatureFlag(FeatureFlag.FlexibleCollections)) { + override canDelete(org: Organization, flexibleCollectionsEnabled: boolean): boolean { + if (flexibleCollectionsEnabled) { return org?.canDeleteAnyCollection; } else { return org?.canDeleteAnyCollection || (org?.canDeleteAssignedCollections && this.assigned); diff --git a/apps/web/src/app/vault/individual-vault/vault-header/vault-header.component.html b/apps/web/src/app/vault/individual-vault/vault-header/vault-header.component.html index 53d68c15b19..11cc196884c 100644 --- a/apps/web/src/app/vault/individual-vault/vault-header/vault-header.component.html +++ b/apps/web/src/app/vault/individual-vault/vault-header/vault-header.component.html @@ -28,9 +28,7 @@

aria-hidden="true" > {{ title }} - +