fix(editor): Disable email confirmation banner for trialing users (#7340)

Github issue / Community forum post (link here to close automatically):
This commit is contained in:
Milorad FIlipović 2023-10-04 13:36:51 +02:00 committed by GitHub
parent 5e6c1d4f4b
commit 6d3d1789db
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 17 additions and 7 deletions

View file

@ -116,8 +116,8 @@
"auth.signup.setupYourAccount": "Set up your account", "auth.signup.setupYourAccount": "Set up your account",
"auth.signup.setupYourAccountError": "Problem setting up your account", "auth.signup.setupYourAccountError": "Problem setting up your account",
"auth.signup.tokenValidationError": "Issue validating invite token", "auth.signup.tokenValidationError": "Issue validating invite token",
"banners.confirmEmail.message.1": "You need access to your admin email inbox to make sure you can reach your admin dashboard. Please make sure that your admin email", "banners.confirmEmail.message.1": "To secure your account and prevent future access issues, please confirm your",
"banners.confirmEmail.message.2": "is accessible and confirmed.", "banners.confirmEmail.message.2": "email address.",
"banners.confirmEmail.button": "Confirm email", "banners.confirmEmail.button": "Confirm email",
"banners.confirmEmail.toast.success.heading": "Confirmation email sent", "banners.confirmEmail.toast.success.heading": "Confirmation email sent",
"banners.confirmEmail.toast.success.message": "Please check your inbox and click the confirmation link.", "banners.confirmEmail.toast.success.message": "Please check your inbox and click the confirmation link.",

View file

@ -10,6 +10,7 @@ import {
getTrialExpiredUserResponse, getTrialExpiredUserResponse,
getTrialingUserResponse, getTrialingUserResponse,
getUserCloudInfo, getUserCloudInfo,
getNotTrialingUserResponse,
} from './utils/cloudStoreUtils'; } from './utils/cloudStoreUtils';
let uiStore: ReturnType<typeof useUIStore>; let uiStore: ReturnType<typeof useUIStore>;
@ -128,6 +129,8 @@ describe('UI store', () => {
expect(fetchCloudSpy).toHaveBeenCalled(); expect(fetchCloudSpy).toHaveBeenCalled();
expect(fetchUserCloudAccountSpy).toHaveBeenCalled(); expect(fetchUserCloudAccountSpy).toHaveBeenCalled();
expect(uiStore.bannerStack).toContain('TRIAL'); expect(uiStore.bannerStack).toContain('TRIAL');
// There should be no email confirmation banner for trialing users
expect(uiStore.bannerStack).not.toContain('EMAIL_CONFIRMATION');
}); });
it('should add trial over banner to the the stack', async () => { it('should add trial over banner to the the stack', async () => {
@ -143,12 +146,14 @@ describe('UI store', () => {
expect(fetchCloudSpy).toHaveBeenCalled(); expect(fetchCloudSpy).toHaveBeenCalled();
expect(fetchUserCloudAccountSpy).toHaveBeenCalled(); expect(fetchUserCloudAccountSpy).toHaveBeenCalled();
expect(uiStore.bannerStack).toContain('TRIAL_OVER'); expect(uiStore.bannerStack).toContain('TRIAL_OVER');
// There should be no email confirmation banner for trialing users
expect(uiStore.bannerStack).not.toContain('EMAIL_CONFIRMATION');
}); });
it('should add email confirmation banner to the the stack', async () => { it('should add email confirmation banner to the the stack', async () => {
const fetchCloudSpy = vi const fetchCloudSpy = vi
.spyOn(cloudPlanApi, 'getCurrentPlan') .spyOn(cloudPlanApi, 'getCurrentPlan')
.mockResolvedValue(getTrialExpiredUserResponse()); .mockResolvedValue(getNotTrialingUserResponse());
const fetchUserCloudAccountSpy = vi const fetchUserCloudAccountSpy = vi
.spyOn(cloudPlanApi, 'getCloudUserInfo') .spyOn(cloudPlanApi, 'getCloudUserInfo')
.mockResolvedValue(getUserCloudInfo(false)); .mockResolvedValue(getUserCloudInfo(false));
@ -157,7 +162,6 @@ describe('UI store', () => {
await cloudPlanStore.fetchUserCloudAccount(); await cloudPlanStore.fetchUserCloudAccount();
expect(fetchCloudSpy).toHaveBeenCalled(); expect(fetchCloudSpy).toHaveBeenCalled();
expect(fetchUserCloudAccountSpy).toHaveBeenCalled(); expect(fetchUserCloudAccountSpy).toHaveBeenCalled();
expect(uiStore.bannerStack).toContain('TRIAL_OVER');
expect(uiStore.bannerStack).toContain('EMAIL_CONFIRMATION'); expect(uiStore.bannerStack).toContain('EMAIL_CONFIRMATION');
}); });
}); });

View file

@ -1,7 +1,7 @@
import type { Cloud } from '@/Interface'; import type { Cloud } from '@/Interface';
// Mocks cloud plan API responses with different trial expiration dates // Mocks cloud plan API responses with different trial expiration dates
function getUserPlanData(trialExpirationDate: Date): Cloud.PlanData { function getUserPlanData(trialExpirationDate: Date, isTrial = true): Cloud.PlanData {
return { return {
planId: 0, planId: 0,
monthlyExecutionsLimit: 1000, monthlyExecutionsLimit: 1000,
@ -10,7 +10,7 @@ function getUserPlanData(trialExpirationDate: Date): Cloud.PlanData {
isActive: true, isActive: true,
displayName: 'Trial', displayName: 'Trial',
metadata: { metadata: {
group: 'trial', group: isTrial ? 'trial' : 'pro',
slug: 'trial-1', slug: 'trial-1',
trial: { trial: {
gracePeriod: 3, gracePeriod: 3,
@ -42,3 +42,9 @@ export function getTrialExpiredUserResponse(): Cloud.PlanData {
dateInThePast.setDate(dateInThePast.getDate() - 3); dateInThePast.setDate(dateInThePast.getDate() - 3);
return getUserPlanData(dateInThePast); return getUserPlanData(dateInThePast);
} }
export function getNotTrialingUserResponse(): Cloud.PlanData {
const inThreeDays = new Date();
inThreeDays.setDate(inThreeDays.getDate() + 3);
return getUserPlanData(inThreeDays, false);
}

View file

@ -62,7 +62,7 @@ export const useCloudPlanStore = defineStore(STORES.CLOUD_PLAN, () => {
try { try {
if (useUsersStore().isInstanceOwner) { if (useUsersStore().isInstanceOwner) {
await usersStore.fetchUserCloudAccount(); await usersStore.fetchUserCloudAccount();
if (!usersStore.currentUserCloudInfo?.confirmed) { if (!usersStore.currentUserCloudInfo?.confirmed && !userIsTrialing.value) {
useUIStore().pushBannerToStack('EMAIL_CONFIRMATION'); useUIStore().pushBannerToStack('EMAIL_CONFIRMATION');
} }
} }