From 6d85d134ff6daf0674dbf52657b107dae8cfbcdf Mon Sep 17 00:00:00 2001 From: Arman Date: Wed, 17 Apr 2024 14:37:28 +0200 Subject: [PATCH] refactor: remove global variable and use backend data --- src/lib/sdk/billing.ts | 1 + src/lib/stores/billing.ts | 3 +-- src/lib/system.ts | 1 - .../console/account/organizations/+page.svelte | 6 +++--- .../billing/planSummary.svelte | 5 ++--- .../organization-[organization]/header.svelte | 12 +++++++++--- .../wizard/cloudOrganization/confirmDetails.svelte | 5 ++--- .../cloudOrganization/organizationDetails.svelte | 3 +-- .../wizard/cloudOrganization/paymentDetails.svelte | 9 +++++---- src/routes/console/wizard/cloudOrganization/store.ts | 8 ++++---- .../cloudOrganizationChangeTier/choosePlan.svelte | 5 ++--- .../confirmDetails.svelte | 7 ++++--- .../wizard/cloudOrganizationChangeTier/store.ts | 8 ++++---- 13 files changed, 38 insertions(+), 35 deletions(-) diff --git a/src/lib/sdk/billing.ts b/src/lib/sdk/billing.ts index d935bd84e..0dda5f294 100644 --- a/src/lib/sdk/billing.ts +++ b/src/lib/sdk/billing.ts @@ -261,6 +261,7 @@ export type Plan = { storage: AdditionalResource; users: AdditionalResource; }; + trialDays: number; }; export type PlansInfo = { diff --git a/src/lib/stores/billing.ts b/src/lib/stores/billing.ts index 1462f5125..fcdb3ab83 100644 --- a/src/lib/stores/billing.ts +++ b/src/lib/stores/billing.ts @@ -10,7 +10,7 @@ import type { PlansMap, PaymentMethodData } from '$lib/sdk/billing'; -import { IS_TRIAL_DISABLED, isCloud } from '$lib/system'; +import { isCloud } from '$lib/system'; import { cachedStore } from '$lib/helpers/cache'; import { Query } from '@appwrite.io/console'; import { headerAlert } from './headerAlert'; @@ -169,7 +169,6 @@ export function isServiceLimited(serviceId: PlanServices, plan: Tier, total: num } export function calculateTrialDay(org: Organization) { - if (IS_TRIAL_DISABLED) return; if (org?.billingPlan === BillingPlan.STARTER) return false; const endDate = new Date(org?.billingStartDate); const today = new Date(); diff --git a/src/lib/system.ts b/src/lib/system.ts index adc04027e..5cb998dca 100644 --- a/src/lib/system.ts +++ b/src/lib/system.ts @@ -24,4 +24,3 @@ export const isCloud = MODE === Mode.CLOUD; export const isSelfHosted = MODE !== Mode.CLOUD; export const hasStripePublicKey = !!VARS.STRIPE_PUBLIC_KEY; export const GRACE_PERIOD_OVERRIDE = false; -export const IS_TRIAL_DISABLED = true; diff --git a/src/routes/console/account/organizations/+page.svelte b/src/routes/console/account/organizations/+page.svelte index be2b778a2..33811a134 100644 --- a/src/routes/console/account/organizations/+page.svelte +++ b/src/routes/console/account/organizations/+page.svelte @@ -13,11 +13,11 @@ import CreateOrganization from '../../createOrganization.svelte'; import { sdk } from '$lib/stores/sdk'; import type { PageData } from './$types'; - import { IS_TRIAL_DISABLED, isCloud } from '$lib/system'; + import { isCloud } from '$lib/system'; import { Pill } from '$lib/elements'; import type { Models } from '@appwrite.io/console'; import type { Organization } from '$lib/stores/organization'; - import { daysLeftInTrial } from '$lib/stores/billing'; + import { daysLeftInTrial, plansInfo } from '$lib/stores/billing'; import { tooltip } from '$lib/actions/tooltip'; import { toLocaleDate } from '$lib/helpers/date'; import { wizard } from '$lib/stores/wizard'; @@ -82,7 +82,7 @@ FREE {/if} - {#if organization?.billingTrialStartDate && $daysLeftInTrial > 0 && organization.billingPlan !== BillingPlan.STARTER && !IS_TRIAL_DISABLED} + {#if organization?.billingTrialStartDate && $daysLeftInTrial > 0 && organization.billingPlan !== BillingPlan.STARTER && $plansInfo.get(organization.billingPlan)?.trialDays}
0 && - !IS_TRIAL_DISABLED; + $plansInfo.get($organization.billingPlan)?.trialDays; {#if $organization} @@ -56,7 +55,7 @@
{tierToPlan($organization?.billingPlan)?.name} plan
- {#if $organization?.billingPlan !== BillingPlan.STARTER && isTrial && !IS_TRIAL_DISABLED} + {#if $organization?.billingPlan !== BillingPlan.STARTER && isTrial} TRIAL {/if}
diff --git a/src/routes/console/organization-[organization]/header.svelte b/src/routes/console/organization-[organization]/header.svelte index c77fecedf..9b600ea44 100644 --- a/src/routes/console/organization-[organization]/header.svelte +++ b/src/routes/console/organization-[organization]/header.svelte @@ -9,7 +9,13 @@ import { toLocaleDate } from '$lib/helpers/date'; import { isTabSelected } from '$lib/helpers/load'; import { Cover } from '$lib/layout'; - import { daysLeftInTrial, getServiceLimit, readOnly, tierToPlan } from '$lib/stores/billing'; + import { + daysLeftInTrial, + getServiceLimit, + plansInfo, + readOnly, + tierToPlan + } from '$lib/stores/billing'; import { members, newMemberModal, @@ -18,7 +24,7 @@ organizationList } from '$lib/stores/organization'; import { wizard } from '$lib/stores/wizard'; - import { GRACE_PERIOD_OVERRIDE, IS_TRIAL_DISABLED, isCloud } from '$lib/system'; + import { GRACE_PERIOD_OVERRIDE, isCloud } from '$lib/system'; import CreateOrganizationCloud from '../createOrganizationCloud.svelte'; let areMembersLimited: boolean; @@ -94,7 +100,7 @@ {#if isCloud && $organization?.billingPlan === BillingPlan.STARTER} FREE {/if} - {#if isCloud && $organization?.billingTrialStartDate && $daysLeftInTrial > 0 && $organization.billingPlan !== BillingPlan.STARTER && !IS_TRIAL_DISABLED} + {#if isCloud && $organization?.billingTrialStartDate && $daysLeftInTrial > 0 && $organization.billingPlan !== BillingPlan.STARTER && $plansInfo.get($organization.billingPlan)?.trialDays}
Confirm your details - Confirm the details of your new organization{IS_TRIAL_DISABLED + Confirm the details of your new organization{!plan.trialDays ? '.' : ' and start your free trial.'} @@ -126,7 +125,7 @@ {#if $createOrganization.billingPlan !== BillingPlan.STARTER}

This amount, and any additional usage fees, will be charged on a recurring 30-day - billing cycle{IS_TRIAL_DISABLED + billing cycle{!plan.trialDays ? '' : ` after your trial period ends on ${toLocaleDate(billingPayDate.toString())}`}.

diff --git a/src/routes/console/wizard/cloudOrganization/organizationDetails.svelte b/src/routes/console/wizard/cloudOrganization/organizationDetails.svelte index dfe8c80d6..67bed9a75 100644 --- a/src/routes/console/wizard/cloudOrganization/organizationDetails.svelte +++ b/src/routes/console/wizard/cloudOrganization/organizationDetails.svelte @@ -8,7 +8,6 @@ import { plansInfo, tierFree, tierPro, tierScale } from '$lib/stores/billing'; import { organizationList, type Organization } from '$lib/stores/organization'; import { updateStepStatus } from '$lib/stores/wizard'; - import { IS_TRIAL_DISABLED } from '$lib/system'; import { createOrganization, createOrgSteps } from './store'; let showCustomId = false; @@ -109,7 +108,7 @@ {tierPro.description}

- {#if !IS_TRIAL_DISABLED} + {#if proPlan?.trialDays} 14 DAY FREE TRIAL {/if} diff --git a/src/routes/console/wizard/cloudOrganization/paymentDetails.svelte b/src/routes/console/wizard/cloudOrganization/paymentDetails.svelte index 5b03cee1e..956064b66 100644 --- a/src/routes/console/wizard/cloudOrganization/paymentDetails.svelte +++ b/src/routes/console/wizard/cloudOrganization/paymentDetails.svelte @@ -10,9 +10,8 @@ import { initializeStripe, isStripeInitialized, submitStripeCard } from '$lib/stores/stripe'; import { sdk } from '$lib/stores/sdk'; import { toLocaleDate } from '$lib/helpers/date'; - import { showUsageRatesModal } from '$lib/stores/billing'; + import { plansInfo, showUsageRatesModal } from '$lib/stores/billing'; import { PaymentBoxes } from '$lib/components/billing'; - import { IS_TRIAL_DISABLED } from '$lib/system'; const today = new Date(); const billingPayDate = new Date(today.getTime() + 44 * 24 * 60 * 60 * 1000); @@ -75,8 +74,10 @@ Payment details - Add a payment method to your organization. {#if !IS_TRIAL_DISABLED}You will not be charged - until your trial ends on {toLocaleDate(billingPayDate.toString())}. + Add a payment method to your organization. {#if $plansInfo.get($createOrganization.billingPlan)?.trialDays}You + will not be charged until your trial ends on {toLocaleDate(billingPayDate.toString())}. {/if} diff --git a/src/routes/console/wizard/cloudOrganization/store.ts b/src/routes/console/wizard/cloudOrganization/store.ts index 73b050b60..f25d7d5f8 100644 --- a/src/routes/console/wizard/cloudOrganization/store.ts +++ b/src/routes/console/wizard/cloudOrganization/store.ts @@ -1,12 +1,12 @@ import { BillingPlan } from '$lib/constants'; import type { WizardStepsType } from '$lib/layout/wizard.svelte'; -import type { Tier } from '$lib/stores/billing'; -import { IS_TRIAL_DISABLED } from '$lib/system'; -import { writable } from 'svelte/store'; +import { plansInfo, type Tier } from '$lib/stores/billing'; +import { organization } from '$lib/stores/organization'; +import { get, writable } from 'svelte/store'; export const createOrgSteps = writable(new Map()); export const createOrganizationFinalAction = writable( - IS_TRIAL_DISABLED ? 'Create' : 'Start trial' + get(plansInfo)?.get(get(organization)?.billingPlan)?.trialDays ? 'Start trial' : 'Create' ); export const createOrganization = writable<{ diff --git a/src/routes/console/wizard/cloudOrganizationChangeTier/choosePlan.svelte b/src/routes/console/wizard/cloudOrganizationChangeTier/choosePlan.svelte index ad1d62aa1..84b9ff788 100644 --- a/src/routes/console/wizard/cloudOrganizationChangeTier/choosePlan.svelte +++ b/src/routes/console/wizard/cloudOrganizationChangeTier/choosePlan.svelte @@ -13,7 +13,6 @@ import { Pill } from '$lib/elements'; import { BillingPlan } from '$lib/constants'; import { formatCurrency } from '$lib/helpers/numbers'; - import { IS_TRIAL_DISABLED } from '$lib/system'; let usage: OrganizationUsage = null; let members: Models.MembershipList = null; @@ -162,8 +161,8 @@
{#if $organization.billingPlan === BillingPlan.PRO} CURRENT PLAN - {:else if !IS_TRIAL_DISABLED} - 14 DAY FREE TRIAL + {:else if proPlan?.trialDays} + {proPlan?.trialDays} DAY FREE TRIAL {/if}
diff --git a/src/routes/console/wizard/cloudOrganizationChangeTier/confirmDetails.svelte b/src/routes/console/wizard/cloudOrganizationChangeTier/confirmDetails.svelte index dc5e16fb1..9b87670bf 100644 --- a/src/routes/console/wizard/cloudOrganizationChangeTier/confirmDetails.svelte +++ b/src/routes/console/wizard/cloudOrganizationChangeTier/confirmDetails.svelte @@ -16,7 +16,6 @@ feedbackDowngradeOptions, isUpgrade } from './store'; - import { IS_TRIAL_DISABLED } from '$lib/system'; const plan = $plansInfo.get($changeOrganizationTier.billingPlan); const collaboratorPrice = plan?.addons.member?.price ?? 0; @@ -78,7 +77,9 @@ Confirm your details - Confirm the details of your new organization{IS_TRIAL_DISABLED + Confirm the details of your new organization{!$plansInfo.get( + $changeOrganizationTier.billingPlan + )?.trialDays ? '.' : ' and start your free trial.'} @@ -147,7 +148,7 @@

This amount, and any additional usage fees, will be charged on a recurring 30-day - billing cycle{IS_TRIAL_DISABLED + billing cycle{!$plansInfo.get($changeOrganizationTier.billingPlan)?.trialDays ? '' : ` after your trial period ends on ${toLocaleDate(billingPayDate.toString())}`}.

diff --git a/src/routes/console/wizard/cloudOrganizationChangeTier/store.ts b/src/routes/console/wizard/cloudOrganizationChangeTier/store.ts index 2c3ae0501..8d5fad783 100644 --- a/src/routes/console/wizard/cloudOrganizationChangeTier/store.ts +++ b/src/routes/console/wizard/cloudOrganizationChangeTier/store.ts @@ -1,13 +1,13 @@ import { BillingPlan } from '$lib/constants'; import type { WizardStepsType } from '$lib/layout/wizard.svelte'; -import type { Tier } from '$lib/stores/billing'; -import { IS_TRIAL_DISABLED } from '$lib/system'; -import { writable } from 'svelte/store'; +import { plansInfo, type Tier } from '$lib/stores/billing'; +import { organization } from '$lib/stores/organization'; +import { get, writable } from 'svelte/store'; export const changeTierSteps = writable(new Map()); export const isUpgrade = writable(false); export const changeOrganizationFinalAction = writable( - IS_TRIAL_DISABLED ? 'Create' : 'Start trial' + get(plansInfo)?.get(get(organization)?.billingPlan)?.trialDays ? 'Start trial' : 'Create' ); export const changeOrganizationTier = writable<{