1
0
mirror of https://github.com/bitwarden/browser synced 2025-12-11 05:43:41 +00:00

[PM-23133] refactor members component (#16703)

* WIP: added new services, refactor members to use billing service and member action service

* replace dialog logic and user logic with service implementations

* WIP

* wip add tests

* add tests, continue refactoring

* clean up

* move BillingConstraintService to billing ownership

* fix import

* fix seat count not updating if feature flag is disabled

* refactor billingMetadata, clean up
This commit is contained in:
Brandon Treston
2025-10-23 11:16:17 -04:00
committed by GitHub
parent 7321e3132b
commit 0691583b50
16 changed files with 2999 additions and 666 deletions

View File

@@ -30,6 +30,7 @@ import {
} from "@bitwarden/web-vault/app/admin-console/common/people-table-data-source";
import { openEntityEventsDialog } from "@bitwarden/web-vault/app/admin-console/organizations/manage/entity-events.component";
import { BulkStatusComponent } from "@bitwarden/web-vault/app/admin-console/organizations/members/components/bulk/bulk-status.component";
import { MemberActionResult } from "@bitwarden/web-vault/app/admin-console/organizations/members/services/member-actions/member-actions.service";
import {
AddEditMemberDialogComponent,
@@ -199,16 +200,27 @@ export class MembersComponent extends BaseMembersComponent<ProviderUser> {
await this.load();
}
async confirmUser(user: ProviderUser, publicKey: Uint8Array): Promise<void> {
const providerKey = await this.keyService.getProviderKey(this.providerId);
const key = await this.encryptService.encapsulateKeyUnsigned(providerKey, publicKey);
const request = new ProviderUserConfirmRequest();
request.key = key.encryptedString;
await this.apiService.postProviderUserConfirm(this.providerId, user.id, request);
async confirmUser(user: ProviderUser, publicKey: Uint8Array): Promise<MemberActionResult> {
try {
const providerKey = await this.keyService.getProviderKey(this.providerId);
const key = await this.encryptService.encapsulateKeyUnsigned(providerKey, publicKey);
const request = new ProviderUserConfirmRequest();
request.key = key.encryptedString;
await this.apiService.postProviderUserConfirm(this.providerId, user.id, request);
return { success: true };
} catch (error) {
return { success: false, error: error.message };
}
}
removeUser = (id: string): Promise<void> =>
this.apiService.deleteProviderUser(this.providerId, id);
removeUser = async (id: string): Promise<MemberActionResult> => {
try {
await this.apiService.deleteProviderUser(this.providerId, id);
return { success: true };
} catch (error) {
return { success: false, error: error.message };
}
};
edit = async (user: ProviderUser | null): Promise<void> => {
const data: AddEditMemberDialogParams = {
@@ -251,6 +263,12 @@ export class MembersComponent extends BaseMembersComponent<ProviderUser> {
getUsers = (): Promise<ListResponse<ProviderUser>> =>
this.apiService.getProviderUsers(this.providerId);
reinviteUser = (id: string): Promise<void> =>
this.apiService.postProviderUserReinvite(this.providerId, id);
reinviteUser = async (id: string): Promise<MemberActionResult> => {
try {
await this.apiService.postProviderUserReinvite(this.providerId, id);
return { success: true };
} catch (error) {
return { success: false, error: error.message };
}
};
}