From fb0e8fc2ffdb0db394c436fe87bc1b798b72f0ad Mon Sep 17 00:00:00 2001
From: Thomas Rittson <31796059+eliykat@users.noreply.github.com>
Date: Wed, 3 Jan 2024 07:00:37 +1000
Subject: [PATCH] [AC-1921] Fix undefined property errors when bulk deleting
collections (#7336)
* Fix bulk delete collections in individual vault
* Fix deleting collections in org vault
---
.../bulk-delete-dialog.component.html | 4 ++--
.../bulk-delete-dialog.component.ts | 16 ++++++++--------
.../vault/individual-vault/vault.component.ts | 1 -
.../src/app/vault/org-vault/vault.component.ts | 2 +-
4 files changed, 11 insertions(+), 12 deletions(-)
diff --git a/apps/web/src/app/vault/individual-vault/bulk-action-dialogs/bulk-delete-dialog/bulk-delete-dialog.component.html b/apps/web/src/app/vault/individual-vault/bulk-action-dialogs/bulk-delete-dialog/bulk-delete-dialog.component.html
index 968bfa95157..f4248331ffc 100644
--- a/apps/web/src/app/vault/individual-vault/bulk-action-dialogs/bulk-delete-dialog/bulk-delete-dialog.component.html
+++ b/apps/web/src/app/vault/individual-vault/bulk-action-dialogs/bulk-delete-dialog/bulk-delete-dialog.component.html
@@ -7,8 +7,8 @@
{{ "deleteSelectedItemsDesc" | i18n: cipherIds.length }}
-
- {{ "deleteSelectedCollectionsDesc" | i18n: collectionIds.length }}
+
+ {{ "deleteSelectedCollectionsDesc" | i18n: collections.length }}
{{ "deleteSelectedConfirmation" | i18n }}
diff --git a/apps/web/src/app/vault/individual-vault/bulk-action-dialogs/bulk-delete-dialog/bulk-delete-dialog.component.ts b/apps/web/src/app/vault/individual-vault/bulk-action-dialogs/bulk-delete-dialog/bulk-delete-dialog.component.ts
index 38d4351872e..83212a87854 100644
--- a/apps/web/src/app/vault/individual-vault/bulk-action-dialogs/bulk-delete-dialog/bulk-delete-dialog.component.ts
+++ b/apps/web/src/app/vault/individual-vault/bulk-action-dialogs/bulk-delete-dialog/bulk-delete-dialog.component.ts
@@ -15,7 +15,6 @@ import { DialogService } from "@bitwarden/components";
export interface BulkDeleteDialogParams {
cipherIds?: string[];
- collectionIds?: string[];
permanent?: boolean;
organization?: Organization;
organizations?: Organization[];
@@ -47,7 +46,6 @@ export const openBulkDeleteDialog = (
})
export class BulkDeleteDialogComponent {
cipherIds: string[];
- collectionIds: string[];
permanent = false;
organization: Organization;
organizations: Organization[];
@@ -64,7 +62,6 @@ export class BulkDeleteDialogComponent {
private configService: ConfigServiceAbstraction,
) {
this.cipherIds = params.cipherIds ?? [];
- this.collectionIds = params.collectionIds ?? [];
this.permanent = params.permanent;
this.organization = params.organization;
this.organizations = params.organizations;
@@ -85,7 +82,7 @@ export class BulkDeleteDialogComponent {
}
}
- if (this.collectionIds.length) {
+ if (this.collections.length) {
deletePromises.push(this.deleteCollections());
}
@@ -98,8 +95,8 @@ export class BulkDeleteDialogComponent {
this.i18nService.t(this.permanent ? "permanentlyDeletedItems" : "deletedItems"),
);
}
- if (this.collectionIds.length) {
- await this.collectionService.delete(this.collectionIds);
+ if (this.collections.length) {
+ await this.collectionService.delete(this.collections.map((c) => c.id));
this.platformUtilsService.showToast(
"success",
null,
@@ -144,7 +141,10 @@ export class BulkDeleteDialogComponent {
);
return;
}
- return await this.apiService.deleteManyCollections(this.organization.id, this.collectionIds);
+ return await this.apiService.deleteManyCollections(
+ this.organization.id,
+ this.collections.map((c) => c.id),
+ );
// From individual vault, so there can be multiple organizations
} else if (this.organizations && this.collections) {
const deletePromises: Promise[] = [];
@@ -160,7 +160,7 @@ export class BulkDeleteDialogComponent {
}
const orgCollectionIds = orgCollections.map((c) => c.id);
deletePromises.push(
- this.apiService.deleteManyCollections(this.organization.id, orgCollectionIds),
+ this.apiService.deleteManyCollections(organization.id, orgCollectionIds),
);
}
return await Promise.all(deletePromises);
diff --git a/apps/web/src/app/vault/individual-vault/vault.component.ts b/apps/web/src/app/vault/individual-vault/vault.component.ts
index bf389fc7f78..964debb5362 100644
--- a/apps/web/src/app/vault/individual-vault/vault.component.ts
+++ b/apps/web/src/app/vault/individual-vault/vault.component.ts
@@ -856,7 +856,6 @@ export class VaultComponent implements OnInit, OnDestroy {
data: {
permanent: this.filter.type === "trash",
cipherIds: ciphers.map((c) => c.id),
- collectionIds: collections.map((c) => c.id),
organizations: organizations,
collections: collections,
},
diff --git a/apps/web/src/app/vault/org-vault/vault.component.ts b/apps/web/src/app/vault/org-vault/vault.component.ts
index aa547da3656..4dd05b67c15 100644
--- a/apps/web/src/app/vault/org-vault/vault.component.ts
+++ b/apps/web/src/app/vault/org-vault/vault.component.ts
@@ -816,7 +816,7 @@ export class VaultComponent implements OnInit, OnDestroy {
data: {
permanent: this.filter.type === "trash",
cipherIds: ciphers.map((c) => c.id),
- collectionIds: collections.map((c) => c.id),
+ collections: collections,
organization,
},
});