diff --git a/libs/angular/src/vault/components/add-edit.component.ts b/libs/angular/src/vault/components/add-edit.component.ts index 1ca2df6b7333..3747236d51dd 100644 --- a/libs/angular/src/vault/components/add-edit.component.ts +++ b/libs/angular/src/vault/components/add-edit.component.ts @@ -713,19 +713,26 @@ export class AddEditComponent implements OnInit, OnDestroy { } protected deleteCipher() { - // cipher.collectionIds may be null or an empty array. Either is a valid indication that the item is unassigned. - const asAdmin = - this.organization?.canEditAllCiphers || - !this.cipher.collectionIds || - this.cipher.collectionIds.length === 0; return this.cipher.isDeleted - ? this.cipherService.deleteWithServer(this.cipher.id, asAdmin) - : this.cipherService.softDeleteWithServer(this.cipher.id, asAdmin); + ? this.cipherService.deleteWithServer(this.cipher.id, this.asAdmin) + : this.cipherService.softDeleteWithServer(this.cipher.id, this.asAdmin); } protected restoreCipher() { - const asAdmin = this.organization?.canEditAllCiphers; - return this.cipherService.restoreWithServer(this.cipher.id, asAdmin); + return this.cipherService.restoreWithServer(this.cipher.id, this.asAdmin); + } + + /** + * Determines if a cipher must be deleted as an admin by belonging to an organization and being unassigned to a collection. + */ + get asAdmin(): boolean { + return ( + this.cipher.organizationId !== null && + this.cipher.organizationId.length > 0 && + (this.organization?.canEditAllCiphers || + !this.cipher.collectionIds || + this.cipher.collectionIds.length === 0) + ); } get defaultOwnerId(): string | null {