diff --git a/apps/webapp/app/routes/_app.orgs.plan/route.tsx b/apps/webapp/app/routes/_app.orgs.plan/route.tsx index cd754746d..6af2d4b7f 100644 --- a/apps/webapp/app/routes/_app.orgs.plan/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.plan/route.tsx @@ -1,11 +1,4 @@ -import { useForm } from "@conform-to/react"; -import { parse } from "@conform-to/zod"; import { ChartBarIcon } from "@heroicons/react/20/solid"; -import type { ActionFunction, LoaderFunctionArgs } from "@remix-run/node"; -import { json, redirect } from "@remix-run/node"; -import { useActionData } from "@remix-run/react"; -import { typedjson, useTypedLoaderData } from "remix-typedjson"; -import { z } from "zod"; import { PricingCalculator } from "~/components/billing/PricingCalculator"; import { PricingTiers, TierEnterprise, TierFree, TierPro } from "~/components/billing/PricingTiers"; import { RunsVolumeDiscountTable } from "~/components/billing/RunsVolumeDiscountTable"; @@ -18,70 +11,8 @@ import { SheetHeader, SheetTrigger, } from "~/components/primitives/Sheet"; -import { createOrganization } from "~/models/organization.server"; -import { NewOrganizationPresenter } from "~/presenters/NewOrganizationPresenter.server"; -import { commitCurrentProjectSession, setCurrentProjectId } from "~/services/currentProject.server"; -import { requireUserId } from "~/services/session.server"; -import { projectPath } from "~/utils/pathBuilder"; - -const schema = z.object({ - orgName: z.string().min(3).max(50), - projectName: z.string().min(3).max(50), -}); - -export const loader = async ({ request }: LoaderFunctionArgs) => { - const userId = await requireUserId(request); - const presenter = new NewOrganizationPresenter(); - const { hasOrganizations } = await presenter.call({ userId }); - - return typedjson({ - hasOrganizations, - }); -}; - -export const action: ActionFunction = async ({ request }) => { - const userId = await requireUserId(request); - - const formData = await request.formData(); - const submission = parse(formData, { schema }); - - if (!submission.value || submission.intent !== "submit") { - return json(submission); - } - - try { - const organization = await createOrganization({ - title: submission.value.orgName, - userId, - projectName: submission.value.projectName, - }); - - const project = organization.projects[0]; - const session = await setCurrentProjectId(project.id, request); - - return redirect(projectPath(organization, project), { - headers: { - "Set-Cookie": await commitCurrentProjectSession(session), - }, - }); - } catch (error: any) { - return json({ errors: { body: error.message } }, { status: 400 }); - } -}; export default function ChoosePlanPage() { - const { hasOrganizations } = useTypedLoaderData(); - const lastSubmission = useActionData(); - - const [form, { orgName, projectName }] = useForm({ - id: "create-organization", - // TODO: type this - lastSubmission: lastSubmission as any, - onValidate({ formData }) { - return parse(formData, { schema }); - }, - }); - return (
Subscribe for full access