diff --git a/apps/webapp/app/routes/resources.orgs.$organizationSlug.select-plan.tsx b/apps/webapp/app/routes/resources.orgs.$organizationSlug.select-plan.tsx
index c6d336cd7..8e48c39e0 100644
--- a/apps/webapp/app/routes/resources.orgs.$organizationSlug.select-plan.tsx
+++ b/apps/webapp/app/routes/resources.orgs.$organizationSlug.select-plan.tsx
@@ -16,10 +16,8 @@ import {
SubscriptionResult,
} from "@trigger.dev/billing/v3";
import { GitHubLightIcon } from "@trigger.dev/companyicons";
-import { redirect } from "remix-typedjson";
import { z } from "zod";
import { DefinitionTip } from "~/components/DefinitionTooltip";
-import { DeleteJobDialog } from "~/components/jobs/DeleteJobModalContent";
import { Button, LinkButton } from "~/components/primitives/Buttons";
import {
Dialog,
@@ -97,12 +95,6 @@ export async function action({ request, params }: ActionFunctionArgs) {
return billingService.setPlan(organization, request, form.callerPath, payload);
}
-type PricingPlansProps = {
- plans: Plans;
- subscription?: SubscriptionResult;
- organizationSlug: string;
-};
-
const pricingDefinitions = {
usage: {
title: "Usage",
@@ -140,17 +132,28 @@ const pricingDefinitions = {
},
};
+type PricingPlansProps = {
+ plans: Plans;
+ subscription?: SubscriptionResult;
+ organizationSlug: string;
+};
+
export function PricingPlans({ plans, subscription, organizationSlug }: PricingPlansProps) {
+ console.log({ plans, subscription });
return (
-
-
+
+
@@ -161,11 +164,11 @@ export function PricingPlans({ plans, subscription, organizationSlug }: PricingP
export function TierFree({
plan,
- status,
+ subscription,
organizationSlug,
}: {
plan: FreePlanDefinition;
- status: FreeTierStatus;
+ subscription?: SubscriptionResult;
organizationSlug: string;
}) {
const location = useLocation();
@@ -173,14 +176,17 @@ export function TierFree({
const formAction = `/resources/orgs/${organizationSlug}/select-plan`;
const isLoading = navigation.formAction === formAction;
+ const status = subscription?.freeTierStatus ?? "requires_connect";
+
return (
{status === "approved" && (
+
GitHub verified
@@ -272,7 +278,11 @@ export function TierFree({
disabled={isLoading}
LeadingIcon={isLoading ? Spinner : undefined}
>
- Select plan
+ {subscription?.plan === undefined
+ ? "Select plan"
+ : subscription.plan.type === "free"
+ ? "Current plan"
+ : `Downgrade to ${plan.title}`}
)}
@@ -303,21 +313,45 @@ export function TierFree({
export function TierHobby({
plan,
organizationSlug,
+ subscription,
}: {
plan: PaidPlanDefinition;
organizationSlug: string;
+ subscription?: SubscriptionResult;
}) {
+ const location = useLocation();
+ const navigation = useNavigation();
+ const formAction = `/resources/orgs/${organizationSlug}/select-plan`;
+ const isLoading = navigation.formAction === formAction;
+
return (
${plan.limits.includedUsage} usage included
-
-
-
+
@@ -342,21 +376,45 @@ export function TierHobby({
export function TierPro({
plan,
organizationSlug,
+ subscription,
}: {
plan: PaidPlanDefinition;
organizationSlug: string;
+ subscription?: SubscriptionResult;
}) {
+ const location = useLocation();
+ const navigation = useNavigation();
+ const formAction = `/resources/orgs/${organizationSlug}/select-plan`;
+ const isLoading = navigation.formAction === formAction;
+
return (
-
+
${plan.limits.includedUsage} usage included
-
-
-
+