From f851e61124d323b8a856500c68da58398b613128 Mon Sep 17 00:00:00 2001 From: Arman Date: Fri, 22 Dec 2023 17:47:49 +0100 Subject: [PATCH] refactor: tiers into enum --- src/lib/components/support.svelte | 7 +++- src/lib/constants.ts | 6 +++ src/lib/layout/activity.svelte | 3 +- src/lib/layout/containerButton.svelte | 3 +- src/lib/layout/containerHeader.svelte | 9 +++-- src/lib/layout/header.svelte | 3 +- src/lib/layout/logs.svelte | 3 +- src/lib/layout/navigation.svelte | 3 +- src/lib/stores/billing.ts | 13 ++++--- src/routes/console/+layout.svelte | 4 +- .../account/organizations/+page.svelte | 3 +- .../changeOrganizationTierCloud.svelte | 6 +-- .../console/createOrganizationCloud.svelte | 6 +-- src/routes/console/onboarding/+page.svelte | 4 +- .../billing/+page.svelte | 3 +- .../billing/budgetCap.svelte | 4 +- .../billing/planSummary.svelte | 7 ++-- .../createMember.svelte | 6 +-- .../excesLimitModal.svelte | 3 +- .../organization-[organization]/header.svelte | 5 ++- .../usage/[[invoice]]/+page.svelte | 9 +++-- .../auth/templates/+page.svelte | 3 +- .../executions/+page.svelte | 4 +- .../settings/smtp/+page.svelte | 7 ++-- .../settings/usage/[[invoice]]/+page.svelte | 9 +++-- .../bucket-[bucket]/create-file/step1.svelte | 5 ++- .../settings/updateMaxFileSize.svelte | 5 ++- .../cloudOrganization/confirmDetails.svelte | 11 +++--- .../cloudOrganization/inviteMembers.svelte | 9 +++-- .../organizationDetails.svelte | 15 ++++---- .../console/wizard/cloudOrganization/store.ts | 3 +- .../cloudOrganization/usageRates.svelte | 7 ++-- .../choosePlan.svelte | 37 ++++++++++--------- .../confirmDetails.svelte | 7 ++-- .../inviteMembers.svelte | 9 +++-- .../planExcess.svelte | 11 +++--- .../cloudOrganizationChangeTier/store.ts | 3 +- 37 files changed, 146 insertions(+), 109 deletions(-) diff --git a/src/lib/components/support.svelte b/src/lib/components/support.svelte index 06bf93f2aa..c63200f733 100644 --- a/src/lib/components/support.svelte +++ b/src/lib/components/support.svelte @@ -10,10 +10,13 @@ import { isSupportOnline, showSupportModal } from '../../routes/console/wizard/support/store'; import { isCloud } from '$lib/system'; import { organization } from '$lib/stores/organization'; + import { BillingPlan } from '$lib/constants'; export let show = false; - $: isPaid = $organization?.billingPlan === 'tier-1' || $organization?.billingPlan === 'tier-2'; + $: isPaid = + $organization?.billingPlan === BillingPlan.PRO || + $organization?.billingPlan === BillingPlan.SCALE; {#if isCloud} @@ -39,7 +42,7 @@

{/if} - {#if $organization?.billingPlan === 'tier-0'} + {#if $organization?.billingPlan === BillingPlan.STARTER} diff --git a/src/lib/constants.ts b/src/lib/constants.ts index 52d2b999bd..4b9dedb14c 100644 --- a/src/lib/constants.ts +++ b/src/lib/constants.ts @@ -616,3 +616,9 @@ export const limitRates = { } ] }; + +export enum BillingPlan { + STARTER = 'tier-0', + PRO = 'tier-1', + SCALE = 'tier-2' +} diff --git a/src/lib/layout/activity.svelte b/src/lib/layout/activity.svelte index 908ab6b8ad..e888b3b2eb 100644 --- a/src/lib/layout/activity.svelte +++ b/src/lib/layout/activity.svelte @@ -22,6 +22,7 @@ import { isCloud } from '$lib/system'; import { organization } from '$lib/stores/organization'; import { Button } from '$lib/elements/forms'; + import { BillingPlan } from '$lib/constants'; export let logs: Models.LogList; export let offset = 0; @@ -51,7 +52,7 @@ Logs are retained in rolling {hoursToDays(limit)} intervals with the {tierToPlan($organization.billingPlan).name} plan. - {#if $organization?.billingPlan === 'tier-0'} + {#if $organization?.billingPlan === BillingPlan.STARTER} to increase your log retention for a longer period. {/if} diff --git a/src/lib/layout/containerButton.svelte b/src/lib/layout/containerButton.svelte index 48459fb81b..6c39746adb 100644 --- a/src/lib/layout/containerButton.svelte +++ b/src/lib/layout/containerButton.svelte @@ -1,12 +1,13 @@ @@ -53,7 +54,7 @@ {/if} - {#if $createOrganization.billingPlan !== 'tier-0'} + {#if $createOrganization.billingPlan !== BillingPlan.STARTER}

Additional members

{collaboratorsNumber} members

@@ -75,7 +76,7 @@
{/if} - {#if $createOrganization.billingPlan !== 'tier-0'} + {#if $createOrganization.billingPlan !== BillingPlan.STARTER}

{plan.name} plan

${plan.price}

@@ -91,7 +92,7 @@

${totalExpences}

- {#if $createOrganization.billingPlan !== 'tier-0'} + {#if $createOrganization.billingPlan !== BillingPlan.STARTER}

This amount, and any additional usage fees, will be charged on a recurring 30-day billing cycle after your trial period ends on import { Alert } from '$lib/components'; + import { BillingPlan } from '$lib/constants'; import { Button, Form, FormList, InputEmail } from '$lib/elements/forms'; import { Table, @@ -41,10 +42,10 @@ - {#if $createOrganization.billingPlan === 'tier-2'} + {#if $createOrganization.billingPlan === BillingPlan.SCALE} You can add unlimited organization members on the {plan.name} plan at no cost. Each member added will receive an email invite to your organization on completion. - {:else if $createOrganization.billingPlan === 'tier-1'} + {:else if $createOrganization.billingPlan === BillingPlan.PRO} You can add unlimited organization members on the {plan.name} plan for ${plan.addons.member.price} each per month. Each member added will receive an email invite to your organization on completion. @@ -70,7 +71,7 @@ Collaborator - {#if $createOrganization.billingPlan === 'tier-1'} + {#if $createOrganization.billingPlan === BillingPlan.PRO} Cost {/if} @@ -79,7 +80,7 @@ {#each $createOrganization.collaborators as collaborator} {collaborator} - {#if $createOrganization.billingPlan === 'tier-1'} + {#if $createOrganization.billingPlan === BillingPlan.PRO} 15$ {/if} diff --git a/src/routes/console/wizard/cloudOrganization/organizationDetails.svelte b/src/routes/console/wizard/cloudOrganization/organizationDetails.svelte index 8cedbdafeb..785b748625 100644 --- a/src/routes/console/wizard/cloudOrganization/organizationDetails.svelte +++ b/src/routes/console/wizard/cloudOrganization/organizationDetails.svelte @@ -1,5 +1,6 @@ diff --git a/src/routes/console/wizard/cloudOrganization/store.ts b/src/routes/console/wizard/cloudOrganization/store.ts index 481924e9de..0c2e71e7ad 100644 --- a/src/routes/console/wizard/cloudOrganization/store.ts +++ b/src/routes/console/wizard/cloudOrganization/store.ts @@ -1,3 +1,4 @@ +import { BillingPlan } from '$lib/constants'; import type { WizardStepsType } from '$lib/layout/wizard.svelte'; import type { Tier } from '$lib/stores/billing'; import { writable } from 'svelte/store'; @@ -17,7 +18,7 @@ export const createOrganization = writable<{ }>({ id: null, name: null, - billingPlan: 'tier-1', + billingPlan: BillingPlan.PRO, paymentMethodId: null, collaborators: [], billingAddressId: null, diff --git a/src/routes/console/wizard/cloudOrganization/usageRates.svelte b/src/routes/console/wizard/cloudOrganization/usageRates.svelte index 55d94d6a3b..7810b8e3ec 100644 --- a/src/routes/console/wizard/cloudOrganization/usageRates.svelte +++ b/src/routes/console/wizard/cloudOrganization/usageRates.svelte @@ -14,6 +14,7 @@ import { createOrganization } from './store'; import { plansInfo } from '$lib/stores/billing'; import { abbreviateNumber } from '$lib/helpers/numbers'; + import { BillingPlan } from '$lib/constants'; export let show = false; export let tier: string; @@ -49,7 +50,7 @@ } ]; - $: isFree = tier === 'tier-0'; + $: isFree = tier === BillingPlan.STARTER; @@ -57,12 +58,12 @@ Usage on the Starter plan is limited for the following resources. Next billing period: {toLocaleDate( nextDate )}. - {:else if tier === 'tier-1'} + {:else if tier === BillingPlan.PRO}

Usage on the Pro plan will be charged at the end of each billing period at the following rates. Next billing period: {toLocaleDate(nextDate)}.

- {:else if tier === 'tier-2'} + {:else if tier === BillingPlan.SCALE}

Usage on the Scale plan will be charged at the end of each billing period at the following rates. Next billing period: {toLocaleDate(nextDate)}. diff --git a/src/routes/console/wizard/cloudOrganizationChangeTier/choosePlan.svelte b/src/routes/console/wizard/cloudOrganizationChangeTier/choosePlan.svelte index 058651b907..7c3095dddc 100644 --- a/src/routes/console/wizard/cloudOrganizationChangeTier/choosePlan.svelte +++ b/src/routes/console/wizard/cloudOrganizationChangeTier/choosePlan.svelte @@ -11,19 +11,20 @@ import type { Models } from '@appwrite.io/console'; import { sizeToBytes } from '$lib/helpers/sizeConvertion'; import { Pill } from '$lib/elements'; + import { BillingPlan } from '$lib/constants'; let usage: OrganizationUsage = null; let members: Models.MembershipList = null; - $: if ($changeOrganizationTier.billingPlan === 'tier-0' && $changeTierSteps) { + $: if ($changeOrganizationTier.billingPlan === BillingPlan.STARTER && $changeTierSteps) { $changeTierSteps = updateStepStatus($changeTierSteps, 2, true); $changeTierSteps = updateStepStatus($changeTierSteps, 3, true); $changeTierSteps = updateStepStatus($changeTierSteps, 4, true); } $: if ( - $changeOrganizationTier.billingPlan === 'tier-2' || - $changeOrganizationTier.billingPlan === 'tier-1' + $changeOrganizationTier.billingPlan === BillingPlan.SCALE || + $changeOrganizationTier.billingPlan === BillingPlan.PRO ) { $changeTierSteps = updateStepStatus($changeTierSteps, 2, false); $changeTierSteps = updateStepStatus($changeTierSteps, 3, false); @@ -62,7 +63,7 @@ $changeOrganizationTier.limitOverflow.users > 0 || $changeOrganizationTier.limitOverflow.executions > 0 || $changeOrganizationTier.limitOverflow.members > 0) && - $changeOrganizationTier.billingPlan === 'tier-0' + $changeOrganizationTier.billingPlan === BillingPlan.STARTER ) { $changeOrganizationTier.isOverLimit = true; $changeTierSteps = updateStepStatus($changeTierSteps, 5, false); @@ -77,14 +78,14 @@ members = await sdk.forConsole.teams.listMemberships($organization.$id); //Select closest tier from starting one - // if ($organization.billingPlan === 'tier-2') { - // $changeOrganizationTier.billingPlan = 'tier-1'; + // if ($organization.billingPlan === BillingPlan.SCALE) { + // $changeOrganizationTier.billingPlan = BillingPlan.PRO; // } // else - if ($organization.billingPlan === 'tier-1') { - $changeOrganizationTier.billingPlan = 'tier-0'; - } else if ($organization.billingPlan === 'tier-0') { - $changeOrganizationTier.billingPlan = 'tier-1'; + if ($organization.billingPlan === BillingPlan.PRO) { + $changeOrganizationTier.billingPlan = BillingPlan.STARTER; + } else if ($organization.billingPlan === BillingPlan.STARTER) { + $changeOrganizationTier.billingPlan = BillingPlan.PRO; } }); @@ -92,14 +93,14 @@ if (!$changeOrganizationTier.billingPlan) { throw new Error('Please select a plan.'); } - if ($changeOrganizationTier.billingPlan === 'tier-0') { + if ($changeOrganizationTier.billingPlan === BillingPlan.STARTER) { $changeOrganizationTier.collaborators = []; } } - $: freePlan = $plansInfo.plans.find((p) => p.$id === 'tier-0'); - $: proPlan = $plansInfo.plans.find((p) => p.$id === 'tier-1'); - $: scalePlan = $plansInfo.plans.find((p) => p.$id === 'tier-2'); + $: freePlan = $plansInfo.plans.find((p) => p.$id === BillingPlan.STARTER); + $: proPlan = $plansInfo.plans.find((p) => p.$id === BillingPlan.PRO); + $: scalePlan = $plansInfo.plans.find((p) => p.$id === BillingPlan.SCALE); @@ -122,7 +123,7 @@ name="plan" bind:group={$changeOrganizationTier.billingPlan} value="tier-0" - disabled={$organization.billingPlan === 'tier-0'}> + disabled={$organization.billingPlan === BillingPlan.STARTER}>

{tierFree.description}

- {#if $organization.billingPlan === 'tier-0'} + {#if $organization.billingPlan === BillingPlan.STARTER} CURRENT PLAN {/if}
@@ -145,7 +146,7 @@ name="plan" bind:group={$changeOrganizationTier.billingPlan} value="tier-1" - disabled={$organization.billingPlan === 'tier-1'}> + disabled={$organization.billingPlan === BillingPlan.PRO}>
- {#if $organization.billingPlan === 'tier-1'} + {#if $organization.billingPlan === BillingPlan.PRO} CURRENT PLAN {:else} 14 DAY FREE TRIAL diff --git a/src/routes/console/wizard/cloudOrganizationChangeTier/confirmDetails.svelte b/src/routes/console/wizard/cloudOrganizationChangeTier/confirmDetails.svelte index f6095b62f4..0b8f053444 100644 --- a/src/routes/console/wizard/cloudOrganizationChangeTier/confirmDetails.svelte +++ b/src/routes/console/wizard/cloudOrganizationChangeTier/confirmDetails.svelte @@ -1,6 +1,7 @@