From 8b21ad25aa1364a9a727a626ad416f213e35d974 Mon Sep 17 00:00:00 2001 From: Thomas Rittson Date: Mon, 28 Oct 2024 12:17:10 +1000 Subject: [PATCH] Update remaining callers in web --- .../collection-dialog.component.ts | 11 +++++++++- .../bulk-delete-dialog.component.ts | 11 +++++++++- .../vault/individual-vault/vault.component.ts | 20 +++++++++---------- .../abstractions/collection-admin.service.ts | 3 ++- .../default-collection-admin.service.ts | 7 ++++--- .../src/services/jslib-services.module.ts | 2 +- 6 files changed, 36 insertions(+), 18 deletions(-) diff --git a/apps/web/src/app/vault/components/collection-dialog/collection-dialog.component.ts b/apps/web/src/app/vault/components/collection-dialog/collection-dialog.component.ts index a51d408bc7..4b865cd166 100644 --- a/apps/web/src/app/vault/components/collection-dialog/collection-dialog.component.ts +++ b/apps/web/src/app/vault/components/collection-dialog/collection-dialog.component.ts @@ -3,6 +3,7 @@ import { ChangeDetectorRef, Component, Inject, OnDestroy, OnInit } from "@angula import { AbstractControl, FormBuilder, Validators } from "@angular/forms"; import { combineLatest, + firstValueFrom, map, Observable, of, @@ -24,6 +25,8 @@ import { } from "@bitwarden/admin-console/common"; import { OrganizationService } from "@bitwarden/common/admin-console/abstractions/organization/organization.service.abstraction"; import { Organization } from "@bitwarden/common/admin-console/models/domain/organization"; +import { AccountService } from "@bitwarden/common/auth/abstractions/account.service"; +import { getUserId } from "@bitwarden/common/auth/services/account.service"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service"; import { Utils } from "@bitwarden/common/platform/misc/utils"; @@ -96,6 +99,8 @@ export class CollectionDialogComponent implements OnInit, OnDestroy { protected showDeleteButton = false; protected showAddAccessWarning = false; + private activeUserId$ = this.accountService.activeAccount$.pipe(getUserId); + constructor( @Inject(DIALOG_DATA) private params: CollectionDialogParams, private formBuilder: FormBuilder, @@ -108,6 +113,7 @@ export class CollectionDialogComponent implements OnInit, OnDestroy { private organizationUserApiService: OrganizationUserApiService, private dialogService: DialogService, private changeDetectorRef: ChangeDetectorRef, + private accountService: AccountService, ) { this.tabIndex = params.initialTab ?? CollectionDialogTabType.Info; } @@ -305,7 +311,10 @@ export class CollectionDialogComponent implements OnInit, OnDestroy { collectionView.name = this.formGroup.controls.name.value; } - const savedCollection = await this.collectionAdminService.save(collectionView); + const savedCollection = await this.collectionAdminService.save( + collectionView, + await firstValueFrom(this.activeUserId$), + ); this.platformUtilsService.showToast( "success", 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 239abbf4b9..cdccf8e8cc 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 @@ -1,9 +1,12 @@ import { DIALOG_DATA, DialogConfig, DialogRef } from "@angular/cdk/dialog"; import { Component, Inject } from "@angular/core"; +import { firstValueFrom } from "rxjs"; import { CollectionService, CollectionView } from "@bitwarden/admin-console/common"; import { ApiService } from "@bitwarden/common/abstractions/api.service"; import { Organization } from "@bitwarden/common/admin-console/models/domain/organization"; +import { AccountService } from "@bitwarden/common/auth/abstractions/account.service"; +import { getUserId } from "@bitwarden/common/auth/services/account.service"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service"; import { CipherService } from "@bitwarden/common/vault/abstractions/cipher.service"; @@ -50,6 +53,8 @@ export class BulkDeleteDialogComponent { collections: CollectionView[]; unassignedCiphers: string[]; + private activeUserId$ = this.accountService.activeAccount$.pipe(getUserId); + constructor( @Inject(DIALOG_DATA) params: BulkDeleteDialogParams, private dialogRef: DialogRef, @@ -58,6 +63,7 @@ export class BulkDeleteDialogComponent { private i18nService: I18nService, private apiService: ApiService, private collectionService: CollectionService, + private accountService: AccountService, ) { this.cipherIds = params.cipherIds ?? []; this.permanent = params.permanent; @@ -100,7 +106,10 @@ export class BulkDeleteDialogComponent { ); } if (this.collections.length) { - await this.collectionService.delete(this.collections.map((c) => c.id)); + await this.collectionService.delete( + this.collections.map((c) => c.id), + await firstValueFrom(this.activeUserId$), + ); this.platformUtilsService.showToast( "success", null, 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 fcee0b6b21..96b8472198 100644 --- a/apps/web/src/app/vault/individual-vault/vault.component.ts +++ b/apps/web/src/app/vault/individual-vault/vault.component.ts @@ -44,6 +44,7 @@ import { SearchService } from "@bitwarden/common/abstractions/search.service"; import { OrganizationService } from "@bitwarden/common/admin-console/abstractions/organization/organization.service.abstraction"; import { Organization } from "@bitwarden/common/admin-console/models/domain/organization"; import { AccountService } from "@bitwarden/common/auth/abstractions/account.service"; +import { getUserId } from "@bitwarden/common/auth/services/account.service"; import { BillingAccountProfileStateService } from "@bitwarden/common/billing/abstractions/account/billing-account-profile-state.service"; import { EventType } from "@bitwarden/common/enums"; import { FeatureFlag } from "@bitwarden/common/enums/feature-flag.enum"; @@ -55,7 +56,7 @@ import { MessagingService } from "@bitwarden/common/platform/abstractions/messag import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service"; import { Utils } from "@bitwarden/common/platform/misc/utils"; import { SyncService } from "@bitwarden/common/platform/sync"; -import { CipherId, CollectionId, OrganizationId, UserId } from "@bitwarden/common/types/guid"; +import { CipherId, CollectionId, OrganizationId } from "@bitwarden/common/types/guid"; import { CipherService } from "@bitwarden/common/vault/abstractions/cipher.service"; import { TotpService } from "@bitwarden/common/vault/abstractions/totp.service"; import { CipherType } from "@bitwarden/common/vault/enums"; @@ -120,7 +121,6 @@ import { FolderFilter, OrganizationFilter } from "./vault-filter/shared/models/v import { VaultFilterModule } from "./vault-filter/vault-filter.module"; import { VaultHeaderComponent } from "./vault-header/vault-header.component"; import { VaultOnboardingComponent } from "./vault-onboarding/vault-onboarding.component"; -import { getUserId } from "@bitwarden/common/auth/services/account.service"; const BroadcasterSubscriptionId = "VaultComponent"; const SearchTextDebounceInterval = 200; @@ -174,7 +174,6 @@ export class VaultComponent implements OnInit, OnDestroy { protected selectedCollection: TreeNode | undefined; protected canCreateCollections = false; protected currentSearchText$: Observable; - private activeUserId: UserId; private searchText$ = new Subject(); private refresh$ = new BehaviorSubject(null); private destroy$ = new Subject(); @@ -222,10 +221,6 @@ export class VaultComponent implements OnInit, OnDestroy { : "trashCleanupWarning", ); - this.activeUserId = await firstValueFrom( - this.accountService.activeAccount$.pipe(map((a) => a?.id)), - ); - const firstSetup$ = this.route.queryParams.pipe( first(), switchMap(async (params: Params) => { @@ -825,7 +820,7 @@ export class VaultComponent implements OnInit, OnDestroy { if (result.collection) { // Update CollectionService with the new collection const c = new CollectionData(result.collection as CollectionDetailsResponse); - await this.collectionService.upsert(c); + await this.collectionService.upsert(c, await firstValueFrom(this.activeUserId$)); } this.refresh(); } @@ -846,11 +841,14 @@ export class VaultComponent implements OnInit, OnDestroy { if (result.collection) { // Update CollectionService with the new collection const c = new CollectionData(result.collection as CollectionDetailsResponse); - await this.collectionService.upsert(c); + await this.collectionService.upsert(c, await firstValueFrom(this.activeUserId$)); } this.refresh(); } else if (result.action === CollectionDialogAction.Deleted) { - await this.collectionService.delete(result.collection?.id); + await this.collectionService.delete( + result.collection?.id, + await firstValueFrom(this.activeUserId$), + ); this.refresh(); // Navigate away if we deleted the collection we were viewing if (this.selectedCollection?.node.id === c?.id) { @@ -879,7 +877,7 @@ export class VaultComponent implements OnInit, OnDestroy { } try { await this.apiService.deleteCollection(collection.organizationId, collection.id); - await this.collectionService.delete(collection.id); + await this.collectionService.delete(collection.id, await firstValueFrom(this.activeUserId$)); this.toastService.showToast({ variant: "success", diff --git a/libs/admin-console/src/common/collections/abstractions/collection-admin.service.ts b/libs/admin-console/src/common/collections/abstractions/collection-admin.service.ts index 6ade8c8bed..5c992a2526 100644 --- a/libs/admin-console/src/common/collections/abstractions/collection-admin.service.ts +++ b/libs/admin-console/src/common/collections/abstractions/collection-admin.service.ts @@ -1,11 +1,12 @@ import { CollectionDetailsResponse } from "@bitwarden/admin-console/common"; +import { UserId } from "@bitwarden/common/types/guid"; import { CollectionAccessSelectionView, CollectionAdminView } from "../models"; export abstract class CollectionAdminService { getAll: (organizationId: string) => Promise; get: (organizationId: string, collectionId: string) => Promise; - save: (collection: CollectionAdminView) => Promise; + save: (collection: CollectionAdminView, userId: UserId) => Promise; delete: (organizationId: string, collectionId: string) => Promise; bulkAssignAccess: ( organizationId: string, diff --git a/libs/admin-console/src/common/collections/services/default-collection-admin.service.ts b/libs/admin-console/src/common/collections/services/default-collection-admin.service.ts index 0851853498..7f9d52d17f 100644 --- a/libs/admin-console/src/common/collections/services/default-collection-admin.service.ts +++ b/libs/admin-console/src/common/collections/services/default-collection-admin.service.ts @@ -15,6 +15,7 @@ import { CollectionAccessSelectionView, CollectionAdminView, } from "../models"; +import { UserId } from "@bitwarden/common/types/guid"; export class DefaultCollectionAdminService implements CollectionAdminService { constructor( @@ -53,7 +54,7 @@ export class DefaultCollectionAdminService implements CollectionAdminService { return view; } - async save(collection: CollectionAdminView): Promise { + async save(collection: CollectionAdminView, userId: UserId): Promise { const request = await this.encrypt(collection); let response: CollectionDetailsResponse; @@ -69,9 +70,9 @@ export class DefaultCollectionAdminService implements CollectionAdminService { } if (response.assigned) { - await this.collectionService.upsert(new CollectionData(response)); + await this.collectionService.upsert(new CollectionData(response), userId); } else { - await this.collectionService.delete(collection.id); + await this.collectionService.delete(collection.id, userId); } return response; diff --git a/libs/angular/src/services/jslib-services.module.ts b/libs/angular/src/services/jslib-services.module.ts index 5d8822866d..913f16c752 100644 --- a/libs/angular/src/services/jslib-services.module.ts +++ b/libs/angular/src/services/jslib-services.module.ts @@ -1363,7 +1363,7 @@ const safeProviders: SafeProvider[] = [ safeProvider({ provide: CipherAuthorizationService, useClass: DefaultCipherAuthorizationService, - deps: [CollectionService, OrganizationServiceAbstraction], + deps: [CollectionService, OrganizationServiceAbstraction, AccountServiceAbstraction], }), ];