mirror of
https://github.com/bitwarden/browser
synced 2025-12-11 22:03:36 +00:00
[PM-14461] Update organization state after subscription update (#12222)
* Update organization state after subscription update * QA: Fix SM trial seat adjustment
This commit is contained in:
@@ -5,6 +5,8 @@ import { FormBuilder, Validators } from "@angular/forms";
|
|||||||
import { Subject, takeUntil } from "rxjs";
|
import { Subject, takeUntil } from "rxjs";
|
||||||
|
|
||||||
import { OrganizationApiServiceAbstraction } from "@bitwarden/common/admin-console/abstractions/organization/organization-api.service.abstraction";
|
import { OrganizationApiServiceAbstraction } from "@bitwarden/common/admin-console/abstractions/organization/organization-api.service.abstraction";
|
||||||
|
import { InternalOrganizationServiceAbstraction } from "@bitwarden/common/admin-console/abstractions/organization/organization.service.abstraction";
|
||||||
|
import { OrganizationData } from "@bitwarden/common/admin-console/models/data/organization.data";
|
||||||
import { OrganizationSubscriptionUpdateRequest } from "@bitwarden/common/billing/models/request/organization-subscription-update.request";
|
import { OrganizationSubscriptionUpdateRequest } from "@bitwarden/common/billing/models/request/organization-subscription-update.request";
|
||||||
import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";
|
import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";
|
||||||
import { ToastService } from "@bitwarden/components";
|
import { ToastService } from "@bitwarden/components";
|
||||||
@@ -34,6 +36,7 @@ export class AdjustSubscription implements OnInit, OnDestroy {
|
|||||||
private organizationApiService: OrganizationApiServiceAbstraction,
|
private organizationApiService: OrganizationApiServiceAbstraction,
|
||||||
private formBuilder: FormBuilder,
|
private formBuilder: FormBuilder,
|
||||||
private toastService: ToastService,
|
private toastService: ToastService,
|
||||||
|
private internalOrganizationService: InternalOrganizationServiceAbstraction,
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
@@ -64,7 +67,20 @@ export class AdjustSubscription implements OnInit, OnDestroy {
|
|||||||
this.additionalSeatCount,
|
this.additionalSeatCount,
|
||||||
this.adjustSubscriptionForm.value.newMaxSeats,
|
this.adjustSubscriptionForm.value.newMaxSeats,
|
||||||
);
|
);
|
||||||
await this.organizationApiService.updatePasswordManagerSeats(this.organizationId, request);
|
|
||||||
|
const response = await this.organizationApiService.updatePasswordManagerSeats(
|
||||||
|
this.organizationId,
|
||||||
|
request,
|
||||||
|
);
|
||||||
|
|
||||||
|
const organization = await this.internalOrganizationService.get(this.organizationId);
|
||||||
|
|
||||||
|
const organizationData = new OrganizationData(response, {
|
||||||
|
isMember: organization.isMember,
|
||||||
|
isProviderUser: organization.isProviderUser,
|
||||||
|
});
|
||||||
|
|
||||||
|
await this.internalOrganizationService.upsert(organizationData);
|
||||||
|
|
||||||
this.toastService.showToast({
|
this.toastService.showToast({
|
||||||
variant: "success",
|
variant: "success",
|
||||||
|
|||||||
@@ -5,6 +5,8 @@ import { FormBuilder, Validators } from "@angular/forms";
|
|||||||
import { Subject, takeUntil } from "rxjs";
|
import { Subject, takeUntil } from "rxjs";
|
||||||
|
|
||||||
import { OrganizationApiServiceAbstraction } from "@bitwarden/common/admin-console/abstractions/organization/organization-api.service.abstraction";
|
import { OrganizationApiServiceAbstraction } from "@bitwarden/common/admin-console/abstractions/organization/organization-api.service.abstraction";
|
||||||
|
import { InternalOrganizationServiceAbstraction } from "@bitwarden/common/admin-console/abstractions/organization/organization.service.abstraction";
|
||||||
|
import { OrganizationData } from "@bitwarden/common/admin-console/models/data/organization.data";
|
||||||
import { OrganizationSmSubscriptionUpdateRequest } from "@bitwarden/common/billing/models/request/organization-sm-subscription-update.request";
|
import { OrganizationSmSubscriptionUpdateRequest } from "@bitwarden/common/billing/models/request/organization-sm-subscription-update.request";
|
||||||
import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";
|
import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";
|
||||||
import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service";
|
import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service";
|
||||||
@@ -104,6 +106,7 @@ export class SecretsManagerAdjustSubscriptionComponent implements OnInit, OnDest
|
|||||||
private i18nService: I18nService,
|
private i18nService: I18nService,
|
||||||
private platformUtilsService: PlatformUtilsService,
|
private platformUtilsService: PlatformUtilsService,
|
||||||
private toastService: ToastService,
|
private toastService: ToastService,
|
||||||
|
private internalOrganizationService: InternalOrganizationServiceAbstraction,
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
@@ -157,11 +160,20 @@ export class SecretsManagerAdjustSubscriptionComponent implements OnInit, OnDest
|
|||||||
? this.formGroup.value.maxAutoscaleServiceAccounts
|
? this.formGroup.value.maxAutoscaleServiceAccounts
|
||||||
: null;
|
: null;
|
||||||
|
|
||||||
await this.organizationApiService.updateSecretsManagerSubscription(
|
const response = await this.organizationApiService.updateSecretsManagerSubscription(
|
||||||
this.organizationId,
|
this.organizationId,
|
||||||
request,
|
request,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const organization = await this.internalOrganizationService.get(this.organizationId);
|
||||||
|
|
||||||
|
const organizationData = new OrganizationData(response, {
|
||||||
|
isMember: organization.isMember,
|
||||||
|
isProviderUser: organization.isProviderUser,
|
||||||
|
});
|
||||||
|
|
||||||
|
await this.internalOrganizationService.upsert(organizationData);
|
||||||
|
|
||||||
this.toastService.showToast({
|
this.toastService.showToast({
|
||||||
variant: "success",
|
variant: "success",
|
||||||
title: null,
|
title: null,
|
||||||
|
|||||||
@@ -53,11 +53,11 @@ export class OrganizationApiServiceAbstraction {
|
|||||||
updatePasswordManagerSeats: (
|
updatePasswordManagerSeats: (
|
||||||
id: string,
|
id: string,
|
||||||
request: OrganizationSubscriptionUpdateRequest,
|
request: OrganizationSubscriptionUpdateRequest,
|
||||||
) => Promise<void>;
|
) => Promise<ProfileOrganizationResponse>;
|
||||||
updateSecretsManagerSubscription: (
|
updateSecretsManagerSubscription: (
|
||||||
id: string,
|
id: string,
|
||||||
request: OrganizationSmSubscriptionUpdateRequest,
|
request: OrganizationSmSubscriptionUpdateRequest,
|
||||||
) => Promise<void>;
|
) => Promise<ProfileOrganizationResponse>;
|
||||||
updateSeats: (id: string, request: SeatRequest) => Promise<PaymentResponse>;
|
updateSeats: (id: string, request: SeatRequest) => Promise<PaymentResponse>;
|
||||||
updateStorage: (id: string, request: StorageRequest) => Promise<PaymentResponse>;
|
updateStorage: (id: string, request: StorageRequest) => Promise<PaymentResponse>;
|
||||||
verifyBank: (id: string, request: VerifyBankRequest) => Promise<void>;
|
verifyBank: (id: string, request: VerifyBankRequest) => Promise<void>;
|
||||||
|
|||||||
@@ -161,27 +161,29 @@ export class OrganizationApiService implements OrganizationApiServiceAbstraction
|
|||||||
async updatePasswordManagerSeats(
|
async updatePasswordManagerSeats(
|
||||||
id: string,
|
id: string,
|
||||||
request: OrganizationSubscriptionUpdateRequest,
|
request: OrganizationSubscriptionUpdateRequest,
|
||||||
): Promise<void> {
|
): Promise<ProfileOrganizationResponse> {
|
||||||
return this.apiService.send(
|
const r = await this.apiService.send(
|
||||||
"POST",
|
"POST",
|
||||||
"/organizations/" + id + "/subscription",
|
"/organizations/" + id + "/subscription",
|
||||||
request,
|
request,
|
||||||
true,
|
true,
|
||||||
false,
|
true,
|
||||||
);
|
);
|
||||||
|
return new ProfileOrganizationResponse(r);
|
||||||
}
|
}
|
||||||
|
|
||||||
async updateSecretsManagerSubscription(
|
async updateSecretsManagerSubscription(
|
||||||
id: string,
|
id: string,
|
||||||
request: OrganizationSmSubscriptionUpdateRequest,
|
request: OrganizationSmSubscriptionUpdateRequest,
|
||||||
): Promise<void> {
|
): Promise<ProfileOrganizationResponse> {
|
||||||
return this.apiService.send(
|
const r = await this.apiService.send(
|
||||||
"POST",
|
"POST",
|
||||||
"/organizations/" + id + "/sm-subscription",
|
"/organizations/" + id + "/sm-subscription",
|
||||||
request,
|
request,
|
||||||
true,
|
true,
|
||||||
false,
|
true,
|
||||||
);
|
);
|
||||||
|
return new ProfileOrganizationResponse(r);
|
||||||
}
|
}
|
||||||
|
|
||||||
async updateSeats(id: string, request: SeatRequest): Promise<PaymentResponse> {
|
async updateSeats(id: string, request: SeatRequest): Promise<PaymentResponse> {
|
||||||
|
|||||||
Reference in New Issue
Block a user