mirror of
https://github.com/appwrite/console.git
synced 2026-06-06 19:27:48 +00:00
fix: billing.
This commit is contained in:
+1
-1
@@ -22,7 +22,7 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@ai-sdk/svelte": "^1.1.24",
|
||||
"@appwrite.io/console": "https://pkg.vc/-/@appwrite/@appwrite.io/console@5ce6dc7",
|
||||
"@appwrite.io/console": "https://pkg.vc/-/@appwrite/@appwrite.io/console@406d8be",
|
||||
"@appwrite.io/pink-icons": "0.25.0",
|
||||
"@appwrite.io/pink-icons-svelte": "https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@5b26bb8",
|
||||
"@appwrite.io/pink-legacy": "^1.0.3",
|
||||
|
||||
Generated
+5
-5
@@ -12,8 +12,8 @@ importers:
|
||||
specifier: ^1.1.24
|
||||
version: 1.1.24(svelte@5.43.6)(zod@3.24.3)
|
||||
'@appwrite.io/console':
|
||||
specifier: https://pkg.vc/-/@appwrite/@appwrite.io/console@5ce6dc7
|
||||
version: https://pkg.vc/-/@appwrite/@appwrite.io/console@5ce6dc7
|
||||
specifier: https://pkg.vc/-/@appwrite/@appwrite.io/console@406d8be
|
||||
version: https://pkg.vc/-/@appwrite/@appwrite.io/console@406d8be
|
||||
'@appwrite.io/pink-icons':
|
||||
specifier: 0.25.0
|
||||
version: 0.25.0
|
||||
@@ -278,8 +278,8 @@ packages:
|
||||
'@apm-js-collab/tracing-hooks@0.3.1':
|
||||
resolution: {integrity: sha512-Vu1CbmPURlN5fTboVuKMoJjbO5qcq9fA5YXpskx3dXe/zTBvjODFoerw+69rVBlRLrJpwPqSDqEuJDEKIrTldw==}
|
||||
|
||||
'@appwrite.io/console@https://pkg.vc/-/@appwrite/@appwrite.io/console@5ce6dc7':
|
||||
resolution: {tarball: https://pkg.vc/-/@appwrite/@appwrite.io/console@5ce6dc7}
|
||||
'@appwrite.io/console@https://pkg.vc/-/@appwrite/@appwrite.io/console@406d8be':
|
||||
resolution: {tarball: https://pkg.vc/-/@appwrite/@appwrite.io/console@406d8be}
|
||||
version: 1.10.0
|
||||
|
||||
'@appwrite.io/pink-icons-svelte@2.0.0-RC.1':
|
||||
@@ -3667,7 +3667,7 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@appwrite.io/console@https://pkg.vc/-/@appwrite/@appwrite.io/console@5ce6dc7': {}
|
||||
'@appwrite.io/console@https://pkg.vc/-/@appwrite/@appwrite.io/console@406d8be': {}
|
||||
|
||||
'@appwrite.io/pink-icons-svelte@2.0.0-RC.1(svelte@5.43.6)':
|
||||
dependencies:
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
});
|
||||
|
||||
function getCleanPlanName(plan: Plan) {
|
||||
return plan.name.replace(resolvedProfile.platform, '');
|
||||
return plan?.name?.replace(resolvedProfile.platform, '');
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -125,6 +125,6 @@
|
||||
|
||||
{#snippet imaginePlanView()}
|
||||
<Typography.Text variant="m-600">
|
||||
{currentPlan?.chatMessages} daily messages
|
||||
{currentPlan?.limits?.credits} daily messages
|
||||
</Typography.Text>
|
||||
{/snippet}
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
import { page } from '$app/state';
|
||||
import { ProfileMode, resolvedProfile } from '$lib/profiles/index.svelte';
|
||||
|
||||
export let disabled = false;
|
||||
export let isNewOrg = false;
|
||||
export let selfService = true;
|
||||
export let anyOrgFree = false;
|
||||
@@ -22,7 +23,7 @@
|
||||
function message(plan: Plan): string {
|
||||
const price = formatCurrency(plan?.price ?? 0);
|
||||
if (resolvedProfile.id === ProfileMode.STUDIO) {
|
||||
return `${plan.chatMessages} daily messages for ${price} per month + usage`;
|
||||
return `${plan.limits?.credits} daily messages for ${price} per month + usage`;
|
||||
} else {
|
||||
return `${price} per month + usage`;
|
||||
}
|
||||
@@ -34,7 +35,7 @@
|
||||
<LabelCard
|
||||
name="plan"
|
||||
bind:group={billingPlan}
|
||||
disabled={!selfService || (plan.$id === BillingPlan.FREE && anyOrgFree)}
|
||||
disabled={!selfService || (plan.$id === BillingPlan.FREE && anyOrgFree) || disabled}
|
||||
tooltipShow={plan.$id === BillingPlan.FREE && anyOrgFree}
|
||||
value={plan.$id}
|
||||
title={plan.name}>
|
||||
|
||||
@@ -2,7 +2,7 @@ import { BillingPlan } from '@appwrite.io/console';
|
||||
|
||||
export function isFreePlan(plan: BillingPlan | string): boolean {
|
||||
switch (plan) {
|
||||
case BillingPlan.Imaginebasic:
|
||||
case BillingPlan.Imaginetier0:
|
||||
case BillingPlan.Tier0:
|
||||
return true;
|
||||
default:
|
||||
@@ -11,11 +11,5 @@ export function isFreePlan(plan: BillingPlan | string): boolean {
|
||||
}
|
||||
|
||||
export function isProPlan(plan: BillingPlan | string): boolean {
|
||||
switch (plan) {
|
||||
case BillingPlan.Imaginepro:
|
||||
case BillingPlan.Tier1:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
return !isFreePlan(plan);
|
||||
}
|
||||
|
||||
@@ -101,7 +101,7 @@ export const studio: Profile = {
|
||||
id: ProfileMode.STUDIO,
|
||||
platform: 'Imagine',
|
||||
organizationPlatform: Platform.Imagine,
|
||||
freeTier: BillingPlan.Imaginebasic,
|
||||
freeTier: BillingPlan.Imaginetier0,
|
||||
logo: {
|
||||
src: {
|
||||
dark: asset('/images/imagine-logo-dark.svg'),
|
||||
|
||||
@@ -412,6 +412,9 @@ export type Plan = {
|
||||
databasesWrites: AdditionalResource;
|
||||
GBHours: AdditionalResource;
|
||||
imageTransformations: AdditionalResource;
|
||||
|
||||
// imagine specific
|
||||
credits: AdditionalResource;
|
||||
};
|
||||
addons: {
|
||||
seats: PlanAddon;
|
||||
@@ -432,8 +435,9 @@ export type Plan = {
|
||||
buildSize: number; // in MB
|
||||
deploymentSize: number; // in MB
|
||||
usagePerProject: boolean;
|
||||
// imagine specifics
|
||||
chatMessages: number; // daily
|
||||
limits: {
|
||||
credits?: number
|
||||
}
|
||||
};
|
||||
|
||||
export type PlanList = {
|
||||
|
||||
@@ -205,7 +205,11 @@
|
||||
>.
|
||||
</Typography.Text>
|
||||
|
||||
<PlanSelection bind:billingPlan={selectedPlan} isNewOrg />
|
||||
<PlanSelection
|
||||
isNewOrg
|
||||
disabled={$isSubmitting}
|
||||
bind:billingPlan={selectedPlan}
|
||||
/>
|
||||
</Layout.Stack>
|
||||
</Fieldset>
|
||||
{#if !isFreePlan(selectedPlan)}
|
||||
|
||||
@@ -250,6 +250,7 @@
|
||||
!data?.members?.memberships?.find((m) => m.userEmail === collaborator)
|
||||
);
|
||||
}
|
||||
|
||||
const org = await sdk.forConsole.billing.updatePlan(
|
||||
data.organization.$id,
|
||||
selectedPlan,
|
||||
@@ -310,6 +311,8 @@
|
||||
}
|
||||
}
|
||||
|
||||
$: console.log($plansInfo.get(selectedPlan));
|
||||
|
||||
$: isUpgrade = $plansInfo.get(selectedPlan)?.order > $currentPlan?.order;
|
||||
$: isDowngrade = $plansInfo.get(selectedPlan)?.order < $currentPlan?.order;
|
||||
$: isButtonDisabled =
|
||||
@@ -342,7 +345,11 @@
|
||||
</Alert.Inline>
|
||||
{/if}
|
||||
|
||||
<PlanSelection bind:billingPlan={selectedPlan} selfService={data.selfService} />
|
||||
<PlanSelection
|
||||
disabled={$isSubmitting}
|
||||
selfService={data.selfService}
|
||||
bind:billingPlan={selectedPlan}
|
||||
/>
|
||||
|
||||
{#if isDowngrade && isFreePlan(selectedPlan) && data.hasFreeOrgs}
|
||||
<Alert.Inline
|
||||
|
||||
Reference in New Issue
Block a user