From 898069b5c8a61800e84afbf712ae40898c74963a Mon Sep 17 00:00:00 2001 From: Matt Aitken Date: Sun, 29 Jan 2023 08:50:15 -0800 Subject: [PATCH] =?UTF-8?q?Pass=20the=20providers=20into=20the=20no=20work?= =?UTF-8?q?flows=20component=20=E2=80=93=20it=20isn=E2=80=99t=20a=20page?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/components/CreateNewWorkflow.tsx | 22 +++++++------------ .../orgs/$organizationSlug/__org/index.tsx | 11 ++++++---- .../$organizationSlug/__org/workflows.new.tsx | 16 +++++++++++++- 3 files changed, 30 insertions(+), 19 deletions(-) diff --git a/apps/webapp/app/components/CreateNewWorkflow.tsx b/apps/webapp/app/components/CreateNewWorkflow.tsx index eeff83b681a..17b28a31be3 100644 --- a/apps/webapp/app/components/CreateNewWorkflow.tsx +++ b/apps/webapp/app/components/CreateNewWorkflow.tsx @@ -1,9 +1,7 @@ import { ArrowTopRightOnSquareIcon } from "@heroicons/react/24/outline"; -import { useLoaderData } from "@remix-run/react"; -import type { LoaderArgs } from "@remix-run/server-runtime"; +import { SerializableProvider } from "@trigger.dev/providers"; import { PopupButton } from "@typeform/embed-react"; import { ApiLogoIcon } from "~/components/code/ApiLogoIcon"; -import { getIntegrations } from "~/models/integrations.server"; import discord from "../assets/images/discord.png"; import onboarding from "../assets/images/onboarding-image.png"; import { Panel } from "./layout/Panel"; @@ -11,13 +9,7 @@ import { PrimaryA, SecondaryA } from "./primitives/Buttons"; import { Body } from "./primitives/text/Body"; import { SubTitle } from "./primitives/text/SubTitle"; -export async function loader({ params }: LoaderArgs) { - const integrations = getIntegrations(false); - - return { integrations }; -} - -export default function CreateNewWorkflow() { +export function CreateNewWorkflow() { return ( <> Create a new workflow @@ -43,9 +35,11 @@ export default function CreateNewWorkflow() { ); } -export function CreateNewWorkflowNoWorkflows() { - const { integrations } = useLoaderData(); - +export function CreateNewWorkflowNoWorkflows({ + providers, +}: { + providers: SerializableProvider[]; +}) { return ( <> @@ -104,7 +98,7 @@ export function CreateNewWorkflowNoWorkflows() { and we'll add it.
- {integrations.map((provider) => ( + {providers.map((provider) => ( { await requireUserId(request); invariant(params.organizationSlug, "Organization slug is required"); + const providers = getIntegrations(false); const currentEnv = await getRuntimeEnvironmentFromRequest(request); const presenter = new WorkflowListPresenter(); try { const workflows = await presenter.data(params.organizationSlug, currentEnv); - return typedjson({ workflows }); + return typedjson({ workflows, providers }); } catch (error: any) { console.error(error); throw new Response("Error ", { status: 400 }); @@ -44,7 +47,7 @@ export const loader = async ({ request, params }: LoaderArgs) => { }; export default function Page() { - const { workflows } = useTypedLoaderData(); + const { workflows, providers } = useTypedLoaderData(); const currentOrganization = useCurrentOrganization(); if (currentOrganization === undefined) { return <>; @@ -56,7 +59,7 @@ export default function Page() { {workflows.length === 0 ? ( <> Create your first workflow - + ) : ( <> diff --git a/apps/webapp/app/routes/__app/orgs/$organizationSlug/__org/workflows.new.tsx b/apps/webapp/app/routes/__app/orgs/$organizationSlug/__org/workflows.new.tsx index 0f1a2d2b159..5b6e2de84f2 100644 --- a/apps/webapp/app/routes/__app/orgs/$organizationSlug/__org/workflows.new.tsx +++ b/apps/webapp/app/routes/__app/orgs/$organizationSlug/__org/workflows.new.tsx @@ -1,14 +1,28 @@ +import type { LoaderArgs } from "@remix-run/server-runtime"; +import { typedjson, useTypedLoaderData } from "remix-typedjson"; import { CreateNewWorkflowNoWorkflows } from "~/components/CreateNewWorkflow"; import { Container } from "~/components/layout/Container"; import { SubTitle } from "~/components/primitives/text/SubTitle"; import { Title } from "~/components/primitives/text/Title"; +import { getIntegrations } from "~/models/integrations.server"; +import { requireUserId } from "~/services/session.server"; + +export const loader = async ({ request, params }: LoaderArgs) => { + await requireUserId(request); + + const providers = getIntegrations(false); + + return typedjson({ providers }); +}; export default function NewWorkflowPage() { + const { providers } = useTypedLoaderData(); + return ( New Workflow Create a new workflow - + ); }