From 6d3c53be4196f0f81c9529ee2f00177f8c2effaa Mon Sep 17 00:00:00 2001 From: awtkns <32209255+awtkns@users.noreply.github.com> Date: Wed, 19 Jul 2023 14:09:45 -0700 Subject: [PATCH 1/2] =?UTF-8?q?=F0=9F=94=AB=20Manual=20trigger=20block?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../services/workflow/node-block-definitions.ts | 16 +++++++++++++++- next/src/types/workflow.ts | 2 ++ .../schemas/workflow/blocks/manual_trigger.py | 10 ++++++++++ .../web/api/workflow/blocks/web/__init__.py | 3 +++ 4 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 platform/reworkd_platform/schemas/workflow/blocks/manual_trigger.py diff --git a/next/src/services/workflow/node-block-definitions.ts b/next/src/services/workflow/node-block-definitions.ts index 96adc779bb..c6b659967e 100644 --- a/next/src/services/workflow/node-block-definitions.ts +++ b/next/src/services/workflow/node-block-definitions.ts @@ -77,8 +77,22 @@ const IfBlockDefinition: NodeBlockDefinition = { output_fields: [], }; +const TriggerBlockDefinition: NodeBlockDefinition = { + name: "Manual Trigger", + type: "ManualTriggerBlock", + description: "Trigger a block manually", + image_url: "/tools/web.png", + input_fields: [], + output_fields: [], +}; + export const getNodeBlockDefinitions = () => { - return [UrlStatusCheckBlockDefinition, SlackWebhookBlockDefinition, IfBlockDefinition]; + return [ + UrlStatusCheckBlockDefinition, + SlackWebhookBlockDefinition, + IfBlockDefinition, + TriggerBlockDefinition, + ]; }; export const getNodeBlockDefinitionFromNode = (node: Node) => { diff --git a/next/src/types/workflow.ts b/next/src/types/workflow.ts index 66435522da..ca1b33b7b1 100644 --- a/next/src/types/workflow.ts +++ b/next/src/types/workflow.ts @@ -57,6 +57,8 @@ export const toReactFlowEdge = (edge: WorkflowEdge) => export const getNodeType = (block: NodeBlock) => { switch (block.type) { + case "ManualTriggerBlock": + return "trigger"; case "IfBlock": return "if"; default: diff --git a/platform/reworkd_platform/schemas/workflow/blocks/manual_trigger.py b/platform/reworkd_platform/schemas/workflow/blocks/manual_trigger.py new file mode 100644 index 0000000000..2bec4ac8ef --- /dev/null +++ b/platform/reworkd_platform/schemas/workflow/blocks/manual_trigger.py @@ -0,0 +1,10 @@ +from reworkd_platform.schemas.workflow.base import Block, BlockIOBase + + +class ManualTriggerBlock(Block): + type = "ManualTriggerBlock" + description = "Outputs the status code of a GET request to a URL" + image_url = "" + + async def run(self) -> BlockIOBase: + return BlockIOBase() diff --git a/platform/reworkd_platform/web/api/workflow/blocks/web/__init__.py b/platform/reworkd_platform/web/api/workflow/blocks/web/__init__.py index e8db3042e8..18331bb08a 100644 --- a/platform/reworkd_platform/web/api/workflow/blocks/web/__init__.py +++ b/platform/reworkd_platform/web/api/workflow/blocks/web/__init__.py @@ -1,9 +1,12 @@ from reworkd_platform.schemas.workflow.base import Block +from reworkd_platform.schemas.workflow.blocks.manual_trigger import ManualTriggerBlock from reworkd_platform.schemas.workflow.blocks.slack_webhook import SlackWebhook from reworkd_platform.schemas.workflow.blocks.status_check import UrlStatusCheckBlock def get_block_runner(block: Block) -> Block: + if block.type == "ManualTriggerBlock": + return ManualTriggerBlock(**block.dict()) if block.type == "UrlStatusCheck": return UrlStatusCheckBlock(**block.dict()) if block.type == "SlackWebhook": From 30635c42373861b3a0a14909738ccee53f9c2bee Mon Sep 17 00:00:00 2001 From: awtkns <32209255+awtkns@users.noreply.github.com> Date: Wed, 19 Jul 2023 15:06:40 -0700 Subject: [PATCH 2/2] =?UTF-8?q?=F0=9F=94=AB=20Manual=20trigger=20block?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- next/src/components/PrimaryButton.tsx | 11 +++++-- .../components/workflow/nodes/TriggerNode.tsx | 24 +++++++++++--- next/src/hooks/useWorkflow.ts | 23 ++++++++----- next/src/pages/workflow/[workflow].tsx | 10 +----- ...agentInputStore.tsx => agentInputStore.ts} | 1 - next/src/stores/workflowStore.ts | 33 +++++++++++++++++++ next/src/types/workflow.ts | 1 + 7 files changed, 77 insertions(+), 26 deletions(-) rename next/src/stores/{agentInputStore.tsx => agentInputStore.ts} (99%) create mode 100644 next/src/stores/workflowStore.ts diff --git a/next/src/components/PrimaryButton.tsx b/next/src/components/PrimaryButton.tsx index 69f43a075f..4357f4b35f 100644 --- a/next/src/components/PrimaryButton.tsx +++ b/next/src/components/PrimaryButton.tsx @@ -1,18 +1,23 @@ import Button from "../ui/button"; import type { ReactNode } from "react"; import React from "react"; +import clsx from "clsx"; type PrimaryButtonProps = { + className?: string; children: ReactNode | string; icon?: React.ReactNode; - onClick?: () => void; + onClick?: () => void | Promise; }; -export default function PrimaryButton({ children, onClick, icon }: PrimaryButtonProps) { +export default function PrimaryButton({ children, onClick, icon, className }: PrimaryButtonProps) { return (