1
0
mirror of https://github.com/bitwarden/browser.git synced 2024-11-21 11:35:34 +01:00

[AC-1999] Fix deleting collections from collection dialog (#8647)

* [AC-1999] Fix null check

this.collection can be both null or unassigned and `!= null` will handle both cases.

* [AC-1999] Navigate away when selected collection is deleted

---------

Co-authored-by: bnagawiecki <107435978+bnagawiecki@users.noreply.github.com>
This commit is contained in:
Shane Melton 2024-04-22 09:32:44 -07:00 committed by GitHub
parent 100b43dd8f
commit b395cb40a7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 24 additions and 8 deletions

View File

@ -679,6 +679,14 @@ export class VaultComponent implements OnInit, OnDestroy {
} else if (result.action === CollectionDialogAction.Deleted) { } else if (result.action === CollectionDialogAction.Deleted) {
await this.collectionService.delete(result.collection?.id); await this.collectionService.delete(result.collection?.id);
this.refresh(); this.refresh();
// Navigate away if we deleted the collection we were viewing
if (this.selectedCollection?.node.id === c?.id) {
void this.router.navigate([], {
queryParams: { collectionId: this.selectedCollection.parent?.node.id ?? null },
queryParamsHandling: "merge",
replaceUrl: true,
});
}
} }
} }
@ -710,9 +718,7 @@ export class VaultComponent implements OnInit, OnDestroy {
); );
// Navigate away if we deleted the collection we were viewing // Navigate away if we deleted the collection we were viewing
if (this.selectedCollection?.node.id === collection.id) { if (this.selectedCollection?.node.id === collection.id) {
// FIXME: Verify that this floating promise is intentional. If it is, add an explanatory comment and ensure there is proper error handling. void this.router.navigate([], {
// eslint-disable-next-line @typescript-eslint/no-floating-promises
this.router.navigate([], {
queryParams: { collectionId: this.selectedCollection.parent?.node.id ?? null }, queryParams: { collectionId: this.selectedCollection.parent?.node.id ?? null },
queryParamsHandling: "merge", queryParamsHandling: "merge",
replaceUrl: true, replaceUrl: true,

View File

@ -80,7 +80,7 @@ export class VaultHeaderComponent implements OnInit {
? this.i18nService.t("collections").toLowerCase() ? this.i18nService.t("collections").toLowerCase()
: this.i18nService.t("vault").toLowerCase(); : this.i18nService.t("vault").toLowerCase();
if (this.collection !== undefined) { if (this.collection != null) {
return this.collection.node.name; return this.collection.node.name;
} }

View File

@ -958,11 +958,9 @@ export class VaultComponent implements OnInit, OnDestroy {
this.i18nService.t("deletedCollectionId", collection.name), this.i18nService.t("deletedCollectionId", collection.name),
); );
// Navigate away if we deleted the colletion we were viewing // Navigate away if we deleted the collection we were viewing
if (this.selectedCollection?.node.id === collection.id) { if (this.selectedCollection?.node.id === collection.id) {
// FIXME: Verify that this floating promise is intentional. If it is, add an explanatory comment and ensure there is proper error handling. void this.router.navigate([], {
// eslint-disable-next-line @typescript-eslint/no-floating-promises
this.router.navigate([], {
queryParams: { collectionId: this.selectedCollection.parent?.node.id ?? null }, queryParams: { collectionId: this.selectedCollection.parent?.node.id ?? null },
queryParamsHandling: "merge", queryParamsHandling: "merge",
replaceUrl: true, replaceUrl: true,
@ -1095,6 +1093,18 @@ export class VaultComponent implements OnInit, OnDestroy {
result.action === CollectionDialogAction.Deleted result.action === CollectionDialogAction.Deleted
) { ) {
this.refresh(); this.refresh();
// If we deleted the selected collection, navigate up/away
if (
result.action === CollectionDialogAction.Deleted &&
this.selectedCollection?.node.id === c?.id
) {
void this.router.navigate([], {
queryParams: { collectionId: this.selectedCollection.parent?.node.id ?? null },
queryParamsHandling: "merge",
replaceUrl: true,
});
}
} }
} }