diff --git a/apps/web/src/app/billing/accounts/trial-initiation/trial-billing-step.component.html b/apps/web/src/app/billing/accounts/trial-initiation/trial-billing-step.component.html
index 212df558d94..d947ea96dfb 100644
--- a/apps/web/src/app/billing/accounts/trial-initiation/trial-billing-step.component.html
+++ b/apps/web/src/app/billing/accounts/trial-initiation/trial-billing-step.component.html
@@ -56,7 +56,7 @@
diff --git a/apps/web/src/app/billing/accounts/trial-initiation/trial-billing-step.component.ts b/apps/web/src/app/billing/accounts/trial-initiation/trial-billing-step.component.ts
index 2a67f570db6..c6248a06a89 100644
--- a/apps/web/src/app/billing/accounts/trial-initiation/trial-billing-step.component.ts
+++ b/apps/web/src/app/billing/accounts/trial-initiation/trial-billing-step.component.ts
@@ -55,6 +55,7 @@ export class TrialBillingStepComponent implements OnInit {
@ViewChild(ManageTaxInformationComponent) taxInfoComponent: ManageTaxInformationComponent;
@Input() organizationInfo: OrganizationInfo;
@Input() subscriptionProduct: SubscriptionProduct = SubscriptionProduct.PasswordManager;
+ @Input() trialLength: number;
@Output() steppedBack = new EventEmitter();
@Output() organizationCreated = new EventEmitter();
diff --git a/apps/web/src/app/billing/organizations/organization-plans.component.ts b/apps/web/src/app/billing/organizations/organization-plans.component.ts
index e373b0d4dee..aad3b8df763 100644
--- a/apps/web/src/app/billing/organizations/organization-plans.component.ts
+++ b/apps/web/src/app/billing/organizations/organization-plans.component.ts
@@ -626,7 +626,7 @@ export class OrganizationPlansComponent implements OnInit, OnDestroy {
if (this.createOrganization) {
const orgKey = await this.keyService.makeOrgKey();
const key = orgKey[0].encryptedString;
- const collection = await this.encryptService.encrypt(
+ const collection = await this.encryptService.encryptString(
this.i18nService.t("defaultCollection"),
orgKey[1],
);
diff --git a/apps/web/src/app/billing/shared/self-hosting-license-uploader/organization-self-hosting-license-uploader.component.ts b/apps/web/src/app/billing/shared/self-hosting-license-uploader/organization-self-hosting-license-uploader.component.ts
index c8d5eac2099..222aff3fec6 100644
--- a/apps/web/src/app/billing/shared/self-hosting-license-uploader/organization-self-hosting-license-uploader.component.ts
+++ b/apps/web/src/app/billing/shared/self-hosting-license-uploader/organization-self-hosting-license-uploader.component.ts
@@ -51,7 +51,7 @@ export class OrganizationSelfHostingLicenseUploaderComponent extends AbstractSel
const orgKey = await this.keyService.makeOrgKey();
const key = orgKey[0].encryptedString;
- const collection = await this.encryptService.encrypt(
+ const collection = await this.encryptService.encryptString(
this.i18nService.t("defaultCollection"),
orgKey[1],
);
diff --git a/apps/web/src/app/billing/trial-initiation/complete-trial-initiation/complete-trial-initiation.component.html b/apps/web/src/app/billing/trial-initiation/complete-trial-initiation/complete-trial-initiation.component.html
index 8118b1e512d..078c926891a 100644
--- a/apps/web/src/app/billing/trial-initiation/complete-trial-initiation/complete-trial-initiation.component.html
+++ b/apps/web/src/app/billing/trial-initiation/complete-trial-initiation/complete-trial-initiation.component.html
@@ -48,6 +48,7 @@
? SubscriptionProduct.SecretsManager
: SubscriptionProduct.PasswordManager
"
+ [trialLength]="trialLength"
(steppedBack)="previousStep()"
(organizationCreated)="createdOrganization($event)"
>
@@ -58,6 +59,7 @@
[email]="email"
[orgLabel]="orgLabel"
[product]="this.product"
+ [trialLength]="trialLength"
>
{
- it("shows password manager text", () => {
+ beforeEach(() => {
+ route.queryParams = {};
+ });
+
+ it("shows password manager free trial text", () => {
route.queryParams.product = `${ProductType.PasswordManager}`;
expect(freeTrialTextResolver(route, routerStateSnapshot)).toEqual({
@@ -19,7 +23,16 @@ describe("freeTrialTextResolver", () => {
});
});
- it("shows secret manager text", () => {
+ it("shows password manager text", () => {
+ route.queryParams.product = `${ProductType.PasswordManager}`;
+ route.queryParams.trialLength = "0";
+
+ expect(freeTrialTextResolver(route, routerStateSnapshot)).toEqual({
+ key: "continueSettingUpPasswordManager",
+ });
+ });
+
+ it("shows secret manager free trial text", () => {
route.queryParams.product = `${ProductType.SecretsManager}`;
expect(freeTrialTextResolver(route, routerStateSnapshot)).toEqual({
@@ -27,11 +40,29 @@ describe("freeTrialTextResolver", () => {
});
});
- it("shows default text", () => {
+ it("shows secret manager text", () => {
+ route.queryParams.product = `${ProductType.SecretsManager}`;
+ route.queryParams.trialLength = "0";
+
+ expect(freeTrialTextResolver(route, routerStateSnapshot)).toEqual({
+ key: "continueSettingUpSecretsManager",
+ });
+ });
+
+ it("shows default free trial text", () => {
route.queryParams.product = `${ProductType.PasswordManager},${ProductType.SecretsManager}`;
expect(freeTrialTextResolver(route, routerStateSnapshot)).toEqual({
key: "continueSettingUpFreeTrial",
});
});
+
+ it("shows default text", () => {
+ route.queryParams.product = `${ProductType.PasswordManager},${ProductType.SecretsManager}`;
+ route.queryParams.trialLength = "0";
+
+ expect(freeTrialTextResolver(route, routerStateSnapshot)).toEqual({
+ key: "continueSettingUp",
+ });
+ });
});
diff --git a/apps/web/src/app/billing/trial-initiation/complete-trial-initiation/resolver/free-trial-text.resolver.ts b/apps/web/src/app/billing/trial-initiation/complete-trial-initiation/resolver/free-trial-text.resolver.ts
index 28d61a6de13..eaeeec28f96 100644
--- a/apps/web/src/app/billing/trial-initiation/complete-trial-initiation/resolver/free-trial-text.resolver.ts
+++ b/apps/web/src/app/billing/trial-initiation/complete-trial-initiation/resolver/free-trial-text.resolver.ts
@@ -9,21 +9,29 @@ export const freeTrialTextResolver: ResolveFn = (
const { product } = route.queryParams;
const products: ProductType[] = (product ?? "").split(",").map((p: string) => parseInt(p));
+ const trialLength = route.queryParams.trialLength ? parseInt(route.queryParams.trialLength) : 7;
+
const onlyPasswordManager = products.length === 1 && products[0] === ProductType.PasswordManager;
const onlySecretsManager = products.length === 1 && products[0] === ProductType.SecretsManager;
switch (true) {
case onlyPasswordManager:
return {
- key: "continueSettingUpFreeTrialPasswordManager",
+ key:
+ trialLength > 0
+ ? "continueSettingUpFreeTrialPasswordManager"
+ : "continueSettingUpPasswordManager",
};
case onlySecretsManager:
return {
- key: "continueSettingUpFreeTrialSecretsManager",
+ key:
+ trialLength > 0
+ ? "continueSettingUpFreeTrialSecretsManager"
+ : "continueSettingUpSecretsManager",
};
default:
return {
- key: "continueSettingUpFreeTrial",
+ key: trialLength > 0 ? "continueSettingUpFreeTrial" : "continueSettingUp",
};
}
};
diff --git a/apps/web/src/app/billing/trial-initiation/confirmation-details.component.html b/apps/web/src/app/billing/trial-initiation/confirmation-details.component.html
index e706239f9ff..764a417f531 100644
--- a/apps/web/src/app/billing/trial-initiation/confirmation-details.component.html
+++ b/apps/web/src/app/billing/trial-initiation/confirmation-details.component.html
@@ -13,7 +13,7 @@
>.
-
+ 0">
{{ "trialPaidInfoMessage" | i18n: orgLabel }}
diff --git a/apps/web/src/app/billing/trial-initiation/confirmation-details.component.ts b/apps/web/src/app/billing/trial-initiation/confirmation-details.component.ts
index c850cdbd27a..e88c49c4f57 100644
--- a/apps/web/src/app/billing/trial-initiation/confirmation-details.component.ts
+++ b/apps/web/src/app/billing/trial-initiation/confirmation-details.component.ts
@@ -12,6 +12,7 @@ export class ConfirmationDetailsComponent {
@Input() email: string;
@Input() orgLabel: string;
@Input() product?: ProductType = ProductType.PasswordManager;
+ @Input() trialLength: number;
protected readonly Product = ProductType;
}
diff --git a/apps/web/src/locales/en/messages.json b/apps/web/src/locales/en/messages.json
index 6d128037a61..7484835d60c 100644
--- a/apps/web/src/locales/en/messages.json
+++ b/apps/web/src/locales/en/messages.json
@@ -9414,12 +9414,21 @@
"manageBillingFromProviderPortalMessage": {
"message": "Manage billing from the Provider Portal"
},
+ "continueSettingUp": {
+ "message": "Continue setting up Bitwarden"
+ },
"continueSettingUpFreeTrial": {
"message": "Continue setting up your free trial of Bitwarden"
},
+ "continueSettingUpPasswordManager": {
+ "message": "Continue setting up Bitwarden Password Manager"
+ },
"continueSettingUpFreeTrialPasswordManager": {
"message": "Continue setting up your free trial of Bitwarden Password Manager"
},
+ "continueSettingUpSecretsManager": {
+ "message": "Continue setting up Bitwarden Secrets Manager"
+ },
"continueSettingUpFreeTrialSecretsManager": {
"message": "Continue setting up your free trial of Bitwarden Secrets Manager"
},
diff --git a/libs/common/src/billing/services/organization-billing.service.ts b/libs/common/src/billing/services/organization-billing.service.ts
index 6622cdcdce3..c6bd88d8dd6 100644
--- a/libs/common/src/billing/services/organization-billing.service.ts
+++ b/libs/common/src/billing/services/organization-billing.service.ts
@@ -120,7 +120,7 @@ export class OrganizationBillingService implements OrganizationBillingServiceAbs
private async makeOrganizationKeys(): Promise {
const [encryptedKey, key] = await this.keyService.makeOrgKey();
const [publicKey, encryptedPrivateKey] = await this.keyService.makeKeyPair(key);
- const encryptedCollectionName = await this.encryptService.encrypt(
+ const encryptedCollectionName = await this.encryptService.encryptString(
this.i18nService.t("defaultCollection"),
key,
);