Skip to content

Commit 9060e03

Browse files
authored
Merge pull request #2348 from appwrite/add-org-badges
2 parents 6b3bf5c + 638fe52 commit 9060e03

File tree

1 file changed

+57
-17
lines changed

1 file changed

+57
-17
lines changed

src/routes/(console)/account/organizations/+page.svelte

Lines changed: 57 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,41 @@
2323
import { Icon, Tooltip, Typography } from '@appwrite.io/pink-svelte';
2424
import { IconPlus } from '@appwrite.io/pink-icons-svelte';
2525
26-
export let data: PageData;
27-
let addOrganization = false;
26+
const {
27+
data
28+
}: {
29+
data: PageData;
30+
} = $props();
2831
29-
const getMemberships = async (teamId: string) => {
32+
let addOrganization = $state(false);
33+
34+
async function getMemberships(teamId: string): Promise<string[]> {
3035
const memberships = await sdk.forConsole.teams.listMemberships({ teamId });
3136
return memberships.memberships.map((team) => team.userName || team.userEmail);
32-
};
37+
}
38+
39+
function isOrganizationOnTrial(organization: Organization): boolean {
40+
if (!organization?.billingTrialStartDate) return false;
41+
if ($daysLeftInTrial <= 0) return false;
42+
if (organization.billingPlan === BillingPlan.FREE) return false;
43+
44+
return !!$plansInfo.get(organization.billingPlan)?.trialDays;
45+
}
46+
47+
function isNonPayingOrganization(organization: Organization): boolean {
48+
return (
49+
organization?.billingPlan === BillingPlan.FREE ||
50+
organization?.billingPlan === BillingPlan.GITHUB_EDUCATION
51+
);
52+
}
53+
54+
function isPayingOrganization(team: Models.Preferences | Organization): Organization | null {
55+
const isPayingOrganization =
56+
isCloudOrg(team) && !isOrganizationOnTrial(team) && !isNonPayingOrganization(team);
57+
58+
if (isPayingOrganization) return team as Organization;
59+
else return null;
60+
}
3361
3462
function isCloudOrg(
3563
data: Partial<Models.TeamList<Models.Preferences>> | Organization
@@ -56,12 +84,15 @@
5684

5785
{#if data.organizations.teams.length}
5886
<CardContainer
59-
total={data.organizations.total}
60-
offset={data.offset}
6187
event="organization"
62-
on:click={createOrg}>
88+
offset={data.offset}
89+
on:click={createOrg}
90+
disableEmpty={false}
91+
total={data.organizations.total}>
6392
{#each data.organizations.teams as organization}
6493
{@const avatarList = getMemberships(organization.$id)}
94+
{@const payingOrg = isPayingOrganization(organization)}
95+
6596
<GridItem1 href={`${base}/organization-${organization.$id}`}>
6697
<svelte:fragment slot="eyebrow">
6798
{organization?.total}
@@ -72,19 +103,20 @@
72103
</svelte:fragment>
73104
<svelte:fragment slot="status">
74105
{#if isCloudOrg(organization)}
75-
{#if organization?.billingPlan === BillingPlan.FREE || organization?.billingPlan === BillingPlan.GITHUB_EDUCATION}
106+
{#if isNonPayingOrganization(organization)}
76107
<Tooltip>
77-
<div class="u-flex u-cross-center">
78-
<Badge
79-
variant="secondary"
80-
content={tierToPlan(organization?.billingPlan)?.name}
81-
class="eyebrow-heading-3" />
82-
</div>
83-
<span slot="tooltip"
84-
>You are limited to 1 free organization per account</span>
108+
<Badge
109+
size="xs"
110+
variant="secondary"
111+
content={tierToPlan(organization?.billingPlan)?.name} />
112+
113+
<span slot="tooltip">
114+
You are limited to 1 free organization per account
115+
</span>
85116
</Tooltip>
86117
{/if}
87-
{#if organization?.billingTrialStartDate && $daysLeftInTrial > 0 && organization.billingPlan !== BillingPlan.FREE && $plansInfo.get(organization.billingPlan)?.trialDays}
118+
119+
{#if isOrganizationOnTrial(organization)}
88120
<Tooltip>
89121
<div class="u-flex u-cross-center">
90122
<Badge
@@ -98,6 +130,14 @@
98130
)}. ${$daysLeftInTrial} days remaining.`}</span>
99131
</Tooltip>
100132
{/if}
133+
134+
{#if payingOrg}
135+
<Badge
136+
size="xs"
137+
type="success"
138+
variant="secondary"
139+
content={tierToPlan(payingOrg?.billingPlan)?.name} />
140+
{/if}
101141
{/if}
102142
</svelte:fragment>
103143
{#await avatarList}

0 commit comments

Comments
 (0)