1
0
mirror of https://github.com/bitwarden/browser synced 2025-12-15 07:43:35 +00:00

[AC-1607] Add offboarding survey to subscription pages (#7809)

* Add offboarding survey to subscription pages

* Cleaning up unused code

* Removing unused eslint suppression

* Product updates

* Jared's feedback
This commit is contained in:
Alex Morask
2024-02-09 12:08:46 -05:00
committed by GitHub
parent 64381cbae0
commit b239e3736f
12 changed files with 358 additions and 43 deletions

View File

@@ -82,8 +82,10 @@ import { UserVerificationService } from "@bitwarden/common/auth/services/user-ve
import { WebAuthnLoginApiService } from "@bitwarden/common/auth/services/webauthn-login/webauthn-login-api.service";
import { WebAuthnLoginPrfCryptoService } from "@bitwarden/common/auth/services/webauthn-login/webauthn-login-prf-crypto.service";
import { WebAuthnLoginService } from "@bitwarden/common/auth/services/webauthn-login/webauthn-login.service";
import { BillingApiServiceAbstraction } from "@bitwarden/common/billing/abstractions/billilng-api.service.abstraction";
import { BillingBannerServiceAbstraction } from "@bitwarden/common/billing/abstractions/billing-banner.service.abstraction";
import { OrganizationBillingServiceAbstraction } from "@bitwarden/common/billing/abstractions/organization-billing.service";
import { BillingApiService } from "@bitwarden/common/billing/services/billing-api.service";
import { BillingBannerService } from "@bitwarden/common/billing/services/billing-banner.service";
import { OrganizationBillingService } from "@bitwarden/common/billing/services/organization-billing.service";
import { AppIdService as AppIdServiceAbstraction } from "@bitwarden/common/platform/abstractions/app-id.service";
@@ -916,6 +918,11 @@ import { ModalService } from "./modal.service";
useClass: VaultSettingsService,
deps: [StateProvider],
},
{
provide: BillingApiServiceAbstraction,
useClass: BillingApiService,
deps: [ApiServiceAbstraction],
},
],
})
export class JslibServicesModule {}

View File

@@ -0,0 +1,9 @@
import { SubscriptionCancellationRequest } from "../../billing/models/request/subscription-cancellation.request";
export abstract class BillingApiServiceAbstraction {
cancelOrganizationSubscription: (
organizationId: string,
request: SubscriptionCancellationRequest,
) => Promise<void>;
cancelPremiumUserSubscription: (request: SubscriptionCancellationRequest) => Promise<void>;
}

View File

@@ -0,0 +1,4 @@
export type SubscriptionCancellationRequest = {
reason: string;
feedback?: string;
};

View File

@@ -0,0 +1,24 @@
import { ApiService } from "../../abstractions/api.service";
import { BillingApiServiceAbstraction } from "../../billing/abstractions/billilng-api.service.abstraction";
import { SubscriptionCancellationRequest } from "../../billing/models/request/subscription-cancellation.request";
export class BillingApiService implements BillingApiServiceAbstraction {
constructor(private apiService: ApiService) {}
cancelOrganizationSubscription(
organizationId: string,
request: SubscriptionCancellationRequest,
): Promise<void> {
return this.apiService.send(
"POST",
"/organizations/" + organizationId + "/cancel",
request,
true,
false,
);
}
cancelPremiumUserSubscription(request: SubscriptionCancellationRequest): Promise<void> {
return this.apiService.send("POST", "/accounts/cancel-premium", request, true, false);
}
}

View File

@@ -7,6 +7,7 @@ export enum FeatureFlag {
GeneratorToolsModernization = "generator-tools-modernization",
KeyRotationImprovements = "key-rotation-improvements",
FlexibleCollectionsMigration = "flexible-collections-migration",
AC1607_PresentUserOffboardingSurvey = "AC-1607_present-user-offboarding-survey",
}
// Replace this with a type safe lookup of the feature flag values in PM-2282