From 566d3598086c980b631112d6c5f090411fb0dbaf Mon Sep 17 00:00:00 2001 From: gbubemismith Date: Thu, 18 Jul 2024 12:07:32 -0400 Subject: [PATCH 1/3] removed the use of deletepromise from folder edit dialog on web --- .../individual-vault/folder-add-edit.component.ts | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/apps/web/src/app/vault/individual-vault/folder-add-edit.component.ts b/apps/web/src/app/vault/individual-vault/folder-add-edit.component.ts index 734b7179acd4..fe61d9b9a112 100644 --- a/apps/web/src/app/vault/individual-vault/folder-add-edit.component.ts +++ b/apps/web/src/app/vault/individual-vault/folder-add-edit.component.ts @@ -8,7 +8,7 @@ import { LogService } from "@bitwarden/common/platform/abstractions/log.service" import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service"; import { FolderApiServiceAbstraction } from "@bitwarden/common/vault/abstractions/folder/folder-api.service.abstraction"; import { FolderService } from "@bitwarden/common/vault/abstractions/folder/folder.service.abstraction"; -import { DialogService } from "@bitwarden/components"; +import { DialogService, ToastService } from "@bitwarden/components"; @Component({ selector: "app-folder-add-edit", @@ -24,6 +24,7 @@ export class FolderAddEditComponent extends BaseFolderAddEditComponent { logService: LogService, dialogService: DialogService, formBuilder: FormBuilder, + protected toastService: ToastService, protected dialogRef: DialogRef, @Inject(DIALOG_DATA) params: FolderAddEditDialogParams, ) { @@ -51,10 +52,12 @@ export class FolderAddEditComponent extends BaseFolderAddEditComponent { } try { - this.deletePromise = this.folderApiService.delete(this.folder.id); - await this.deletePromise; - this.platformUtilsService.showToast("success", null, this.i18nService.t("deletedFolder")); - this.onDeletedFolder.emit(this.folder); + await this.folderApiService.delete(this.folder.id); + this.toastService.showToast({ + variant: "success", + title: null, + message: this.i18nService.t("deletedFolder"), + }); } catch (e) { this.logService.error(e); } From 02f3583145184e00147bc964a90ef0a3787a38de Mon Sep 17 00:00:00 2001 From: gbubemismith Date: Thu, 18 Jul 2024 15:58:03 -0400 Subject: [PATCH 2/3] resolved fix me --- apps/web/src/app/vault/individual-vault/vault.component.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) 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 7d17141e5917..1de2dd3b5bc5 100644 --- a/apps/web/src/app/vault/individual-vault/vault.component.ts +++ b/apps/web/src/app/vault/individual-vault/vault.component.ts @@ -464,9 +464,7 @@ export class VaultComponent implements OnInit, OnDestroy { const result = await lastValueFrom(dialog.closed); if (result === FolderAddEditDialogResult.Deleted) { - // FIXME: Verify that this floating promise is intentional. If it is, add an explanatory comment and ensure there is proper error handling. - // eslint-disable-next-line @typescript-eslint/no-floating-promises - this.router.navigate([], { + await this.router.navigate([], { queryParams: { folderId: null }, queryParamsHandling: "merge", replaceUrl: true, From 622e02f240af53fd94bcbd9cb3bf563f39c192fc Mon Sep 17 00:00:00 2001 From: gbubemismith Date: Thu, 18 Jul 2024 17:18:32 -0400 Subject: [PATCH 3/3] return folders if folder is not found with folder id --- .../src/vault/services/folder/folder.service.ts | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/libs/common/src/vault/services/folder/folder.service.ts b/libs/common/src/vault/services/folder/folder.service.ts index 17d9f39f8ec4..7de7222edcaf 100644 --- a/libs/common/src/vault/services/folder/folder.service.ts +++ b/libs/common/src/vault/services/folder/folder.service.ts @@ -137,16 +137,14 @@ export class FolderService implements InternalFolderServiceAbstraction { return; } - if (typeof id === "string") { - if (folders[id] == null) { - return; + const folderIdsToDelete = Array.isArray(id) ? id : [id]; + + folderIdsToDelete.forEach((id) => { + if (folders[id] != null) { + delete folders[id]; } - delete folders[id]; - } else { - (id as string[]).forEach((i) => { - delete folders[i]; - }); - } + }); + return folders; });