From 7d57d6ae2c5211e4f334d98119d8eecf266685e7 Mon Sep 17 00:00:00 2001 From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com> Date: Thu, 18 Sep 2025 18:36:40 +0530 Subject: [PATCH 1/3] feat: Add info alert for Free plan users with no archived projects --- .../organization-[organization]/+page.svelte | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/routes/(console)/organization-[organization]/+page.svelte b/src/routes/(console)/organization-[organization]/+page.svelte index 69a84cd8a..dd58e6e04 100644 --- a/src/routes/(console)/organization-[organization]/+page.svelte +++ b/src/routes/(console)/organization-[organization]/+page.svelte @@ -19,6 +19,7 @@ import { trackEvent, Click } from '$lib/actions/analytics'; import { type Models } from '@appwrite.io/console'; import { getServiceLimit, readOnly, upgradeURL } from '$lib/stores/billing'; + import { BillingPlan } from '$lib/constants'; import { onMount, type ComponentType } from 'svelte'; import { canWriteProjects } from '$lib/stores/roles'; import { checkPricingRefAndRedirect } from '$lib/helpers/pricingRedirect'; @@ -162,6 +163,28 @@ {/if} + {#if isCloud && data.organization.billingPlan === BillingPlan.FREE && projectsToArchive.length === 0} + + Your Free plan includes up to 2 projects and limited resources. Upgrade to unlock + more capacity and features. + + + + + {/if} + {#if activeProjects.length > 0} Date: Thu, 18 Sep 2025 19:01:50 +0530 Subject: [PATCH 2/3] added dismiss and cooldown period of 36hrs --- .../organization-[organization]/+page.svelte | 24 ++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/src/routes/(console)/organization-[organization]/+page.svelte b/src/routes/(console)/organization-[organization]/+page.svelte index dd58e6e04..db8a39d51 100644 --- a/src/routes/(console)/organization-[organization]/+page.svelte +++ b/src/routes/(console)/organization-[organization]/+page.svelte @@ -20,6 +20,7 @@ import { type Models } from '@appwrite.io/console'; import { getServiceLimit, readOnly, upgradeURL } from '$lib/stores/billing'; import { BillingPlan } from '$lib/constants'; + import { hideNotification, shouldShowNotification } from '$lib/helpers/notifications'; import { onMount, type ComponentType } from 'svelte'; import { canWriteProjects } from '$lib/stores/roles'; import { checkPricingRefAndRedirect } from '$lib/helpers/pricingRedirect'; @@ -46,6 +47,7 @@ let addOrganization = false; let showSelectProject = false; let showCreateProjectCloud = false; + let freePlanAlertDismissed = false; let searchQuery: SearchQuery; @@ -98,7 +100,23 @@ } ]); - onMount(async () => checkPricingRefAndRedirect(page.url.searchParams)); + function dismissFreePlanAlert() { + freePlanAlertDismissed = true; + const notificationId = `freePlanAlert_${data.organization.$id}`; + hideNotification(notificationId, { coolOffPeriod: 36 }); + + trackEvent(Click.OrganizationClickUpgrade, { + from: 'button', + source: 'free_plan_info_alert_dismiss' + }); + } + + onMount(async () => { + checkPricingRefAndRedirect(page.url.searchParams); + const notificationId = `freePlanAlert_${data.organization.$id}`; + const shouldShow = shouldShowNotification(notificationId); + freePlanAlertDismissed = !shouldShow; + }); function findRegion(project: Models.Project) { return $regionsStore.regions.find((region) => region.$id === project.region); @@ -163,8 +181,8 @@ {/if} - {#if isCloud && data.organization.billingPlan === BillingPlan.FREE && projectsToArchive.length === 0} - + {#if isCloud && data.organization.billingPlan === BillingPlan.FREE && projectsToArchive.length === 0 && !freePlanAlertDismissed} + Your Free plan includes up to 2 projects and limited resources. Upgrade to unlock more capacity and features. From 745a225f2100af01fb973252698a5c5c19d6315d Mon Sep 17 00:00:00 2001 From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com> Date: Fri, 19 Sep 2025 11:25:15 +0530 Subject: [PATCH 3/3] Update +page.svelte --- src/routes/(console)/organization-[organization]/+page.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/(console)/organization-[organization]/+page.svelte b/src/routes/(console)/organization-[organization]/+page.svelte index db8a39d51..a876015d5 100644 --- a/src/routes/(console)/organization-[organization]/+page.svelte +++ b/src/routes/(console)/organization-[organization]/+page.svelte @@ -103,7 +103,7 @@ function dismissFreePlanAlert() { freePlanAlertDismissed = true; const notificationId = `freePlanAlert_${data.organization.$id}`; - hideNotification(notificationId, { coolOffPeriod: 36 }); + hideNotification(notificationId, { coolOffPeriod: 24 }); trackEvent(Click.OrganizationClickUpgrade, { from: 'button',