Skip to content

Commit 29e8501

Browse files
authored
Merge pull request #2194 from appwrite/fix-SER-228-fix-project-limit-warnings
fix: correct project limit warnings for multi-organization users
2 parents fad9557 + df5bce2 commit 29e8501

File tree

5 files changed

+20
-8
lines changed

5 files changed

+20
-8
lines changed

src/lib/components/billing/alerts/selectProjectCloud.svelte

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,9 @@
2424
let error = $state<string | null>(null);
2525
2626
onMount(() => {
27-
projects = page.data.allProjects?.projects || [];
27+
const currentOrgId = page.data.organization?.$id;
28+
projects =
29+
page.data.currentOrgId === currentOrgId ? page.data.allProjects?.projects || [] : [];
2830
});
2931
3032
let projectsToArchive = $derived(
@@ -71,7 +73,8 @@
7173

7274
<Modal bind:show={showSelectProject} title={'Manage projects'} onSubmit={updateSelected}>
7375
<svelte:fragment slot="description">
74-
Choose which two projects to keep. Projects over the limit will be blocked after this date.
76+
Choose which {$currentPlan?.projects || 2} projects to keep. Projects over the limit will be
77+
blocked after this date.
7578
</svelte:fragment>
7679
{#if error}
7780
<Alert.Inline status="error" title="Error">{error}</Alert.Inline>

src/lib/layout/createProject.svelte

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,9 @@
4747
<Typography.Title size="l">Create your project</Typography.Title>
4848
{/if}
4949
{#if projectsLimited}
50-
<Alert.Inline status="warning" title="You've reached your limit of 2 projects">
50+
<Alert.Inline
51+
status="warning"
52+
title={`You've reached your limit of ${$currentPlan?.projects || 2} projects`}>
5153
Extra projects are available on paid plans for an additional fee
5254
<svelte:fragment slot="actions">
5355
<Button

src/lib/stores/billing.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -317,15 +317,18 @@ export function calculateTrialDay(org: Organization) {
317317
return days;
318318
}
319319

320-
export async function checkForProjectsLimit(org: Organization, projects: number) {
320+
export async function checkForProjectsLimit(org: Organization, orgProjectCount?: number) {
321321
if (!isCloud) return;
322-
if (!org || !projects) return;
322+
if (!org) return;
323323
const plan = await sdk.forConsole.billing.getOrganizationPlan(org.$id);
324324
if (!plan) return;
325325
if (plan.$id !== BillingPlan.FREE) return;
326326
if (org.projects?.length > 0) return;
327327

328-
if (plan.projects > 0 && projects > plan.projects) {
328+
const projectCount = orgProjectCount;
329+
if (projectCount === undefined) return;
330+
331+
if (plan.projects > 0 && projectCount > plan.projects) {
329332
headerAlert.add({
330333
id: 'projectsLimitReached',
331334
component: ProjectsLimit,

src/routes/(console)/+layout.svelte

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -297,7 +297,11 @@
297297
if (currentOrganizationId === org.$id) return;
298298
if (isCloud) {
299299
currentOrganizationId = org.$id;
300-
checkForProjectsLimit(org, data.allProjects?.projects?.length || 0);
300+
const orgProjectCount =
301+
data.allProjects && data.currentOrgId === org.$id
302+
? data.allProjects.projects.length
303+
: undefined;
304+
checkForProjectsLimit(org, orgProjectCount);
301305
checkForEnterpriseTrial(org);
302306
await checkForUsageLimit(org);
303307
checkForMarkedForDeletion(org);

src/routes/(console)/organization-[organization]/+page.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@
167167
</DropList>
168168
</div>
169169

170-
{#if isCloud && $currentPlan?.projects && $currentPlan?.projects > 0 && data.organization.projects.length > 0 && data.projects.total > 2 && $canWriteProjects}
170+
{#if isCloud && $currentPlan?.projects && $currentPlan?.projects > 0 && data.organization.projects.length > 0 && data.projects.total > $currentPlan.projects && $canWriteProjects}
171171
<Alert.Inline
172172
title={`${data.projects.total - data.organization.projects.length} projects will be archived on ${toLocaleDate(billingProjectsLimitDate)}`}>
173173
<Typography.Text>

0 commit comments

Comments
 (0)