From 2be481f606e70b516a6fab63a45a4e0d1ae6000d Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Wed, 3 Sep 2025 04:48:42 +0000 Subject: [PATCH] improve fix: disable project creation --- src/lib/stores/billing.ts | 10 ++++++++-- .../organization-[organization]/+page.svelte | 11 ++++++++--- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/lib/stores/billing.ts b/src/lib/stores/billing.ts index 7a6e8a2e0..9438cbd19 100644 --- a/src/lib/stores/billing.ts +++ b/src/lib/stores/billing.ts @@ -138,6 +138,7 @@ export type PlanServices = | 'logs' | 'memberAddon' | 'members' + | 'projects' | 'platforms' | 'realtime' | 'realtimeAddon' @@ -156,7 +157,7 @@ export function getServiceLimit(serviceId: PlanServices, tier: Tier = null, plan if (!serviceId) return 0; plan ??= get(currentPlan); - + if (tier) { const info = get(plansInfo); if (!info) return 0; @@ -164,10 +165,15 @@ export function getServiceLimit(serviceId: PlanServices, tier: Tier = null, plan } if (serviceId === 'members') { - if (!(plan.addons.seats?.supported ?? false)) return Infinity; + if (!plan.addons.seats) return Infinity; return plan.addons.seats?.limit ?? 1; } + if (serviceId === 'projects') { + if (!plan.addons.seats) return Infinity; + return plan.addons.projects?.limit ?? 1; + } + return plan?.[serviceId] ?? 0; } diff --git a/src/routes/(console)/organization-[organization]/+page.svelte b/src/routes/(console)/organization-[organization]/+page.svelte index 27af7cbff..9e22a5fa3 100644 --- a/src/routes/(console)/organization-[organization]/+page.svelte +++ b/src/routes/(console)/organization-[organization]/+page.svelte @@ -18,7 +18,7 @@ } from '$lib/components'; import { trackEvent, Click } from '$lib/actions/analytics'; import { type Models } from '@appwrite.io/console'; - import { readOnly, upgradeURL } from '$lib/stores/billing'; + import { getServiceLimit, readOnly, upgradeURL } from '$lib/stores/billing'; import { onMount, type ComponentType } from 'svelte'; import { canWriteProjects } from '$lib/stores/roles'; import { checkPricingRefAndRedirect } from '$lib/helpers/pricingRedirect'; @@ -79,6 +79,11 @@ } } + $: projectCreationDisabled = + (isCloud && getServiceLimit('projects') <= data.allProjectsCount) || + ($readOnly && !GRACE_PERIOD_OVERRIDE) || + !$canWriteProjects; + $: $registerCommands([ { label: 'Create project', @@ -86,7 +91,7 @@ showCreate = true; }, keys: ['c'], - disabled: ($readOnly && !GRACE_PERIOD_OVERRIDE) || !$canWriteProjects, + disabled: projectCreationDisabled, group: 'projects', icon: IconPlus } @@ -125,7 +130,7 @@