From 8cef8ae65190fe241b8324f6a019aa3ee6b89e68 Mon Sep 17 00:00:00 2001 From: Rotimi Best Date: Tue, 30 Jul 2024 21:29:27 +0100 Subject: [PATCH] feat: enable subscription via yearly plan --- .../src/lib/components/Org/Settings/store.ts | 2 +- .../src/lib/components/Upgrade/Modal.svelte | 35 ++++++++++++++++--- .../src/lib/utils/translations/de.json | 4 ++- .../src/lib/utils/translations/en.json | 8 +++-- .../src/lib/utils/translations/es.json | 4 ++- .../src/lib/utils/translations/fr.json | 4 ++- .../src/lib/utils/translations/hi.json | 4 ++- .../src/lib/utils/translations/pt.json | 4 ++- .../src/lib/utils/translations/ru.json | 4 ++- .../src/lib/utils/translations/vi.json | 4 ++- packages/shared/src/plans/data.json | 3 +- 11 files changed, 59 insertions(+), 17 deletions(-) diff --git a/apps/dashboard/src/lib/components/Org/Settings/store.ts b/apps/dashboard/src/lib/components/Org/Settings/store.ts index 9714b8df..1bf2484e 100644 --- a/apps/dashboard/src/lib/components/Org/Settings/store.ts +++ b/apps/dashboard/src/lib/components/Org/Settings/store.ts @@ -64,7 +64,7 @@ export interface OrgLandingPageJson { }; } -export let landingPageSettings: Writable = writable({ +export const landingPageSettings: Writable = writable({ header: { title: 'Web Development Courses for', titleHighlight: 'Everyone', diff --git a/apps/dashboard/src/lib/components/Upgrade/Modal.svelte b/apps/dashboard/src/lib/components/Upgrade/Modal.svelte index 45c5238c..b4206b73 100644 --- a/apps/dashboard/src/lib/components/Upgrade/Modal.svelte +++ b/apps/dashboard/src/lib/components/Upgrade/Modal.svelte @@ -26,6 +26,7 @@ let orgPlanChannel: RealtimeChannel; let open = false; let upgraded = false; + let isYearlyPlan = false; async function handleClick(plan, planName: string) { if (plan.CTA.IS_DISABLED || !$profile.id) { @@ -41,7 +42,7 @@ try { const { checkoutURL } = await subscribeToProduct({ - productId: plan.CTA.PRODUCT_ID, + productId: isYearlyPlan ? plan.CTA.PRODUCT_ID_YEARLY : plan.CTA.PRODUCT_ID, email: $profile.email, name: $profile.fullname, triggeredBy: $currentOrg.memberId, @@ -89,6 +90,9 @@ function onLearnMore() { window.open('https://classroomio.com/blog/early-adopter', '_blank'); } + function toggleIsYearlyPlan() { + isYearlyPlan = !isYearlyPlan; + } onMount(() => { orgPlanChannel = supabase @@ -124,6 +128,7 @@ width="w-4/5" maxWidth={upgraded ? 'max-w-[600px]' : undefined} modalHeading={$t('pricing.modal.heading')} + containerClass="pt-4" > {#if upgraded}
@@ -147,6 +152,29 @@
{:else}
+
+ + +
{#each planNames as planName}
{PLANS[planName].PRICE.CURRENCY} - {PLANS[planName].PRICE.MONTHLY} - {#if !PLANS[planName].PRICE.IS_PREMIUM} - /month - {/if} + {isYearlyPlan ? PLANS[planName].PRICE.YEARLY : PLANS[planName].PRICE.MONTHLY}