diff --git a/skyvern-frontend/src/routes/workflows/components/BlockCodeEditor.tsx b/skyvern-frontend/src/routes/workflows/components/BlockCodeEditor.tsx
index a77ff349..c1053ff5 100644
--- a/skyvern-frontend/src/routes/workflows/components/BlockCodeEditor.tsx
+++ b/skyvern-frontend/src/routes/workflows/components/BlockCodeEditor.tsx
@@ -95,15 +95,13 @@ function BlockCodeEditor({
{
- if (onExit) {
- const result = onExit();
+ const result = onExit ? onExit() : true;
- if (result !== false) {
- toggleScriptForNodeCallback({
- label: blockLabel,
- show: false,
- });
- }
+ if (result !== false) {
+ toggleScriptForNodeCallback({
+ label: blockLabel,
+ show: false,
+ });
}
}}
className="size-5 cursor-pointer"
diff --git a/skyvern-frontend/src/routes/workflows/editor/nodes/NodeActionMenu.tsx b/skyvern-frontend/src/routes/workflows/editor/nodes/NodeActionMenu.tsx
index 5be4994a..e0c14cbb 100644
--- a/skyvern-frontend/src/routes/workflows/editor/nodes/NodeActionMenu.tsx
+++ b/skyvern-frontend/src/routes/workflows/editor/nodes/NodeActionMenu.tsx
@@ -10,7 +10,7 @@ import { DotsHorizontalIcon } from "@radix-ui/react-icons";
import { OrgWalled } from "@/components/Orgwalled";
type Props = {
- isDeleteable?: boolean;
+ isDeletable?: boolean;
isScriptable?: boolean;
showScriptText?: string;
onDelete?: () => void;
@@ -18,13 +18,13 @@ type Props = {
};
function NodeActionMenu({
- isDeleteable = true,
+ isDeletable = true,
isScriptable = false,
showScriptText,
onDelete,
onShowScript,
}: Props) {
- if (!isDeleteable && !isScriptable) {
+ if (!isDeletable && !isScriptable) {
return null;
}
@@ -36,7 +36,7 @@ function NodeActionMenu({
Block Actions
- {isDeleteable && (
+ {isDeletable && (
{
onDelete?.();
diff --git a/skyvern-frontend/src/routes/workflows/editor/nodes/StartNode/StartNode.tsx b/skyvern-frontend/src/routes/workflows/editor/nodes/StartNode/StartNode.tsx
index 7a62bce7..6a2828ca 100644
--- a/skyvern-frontend/src/routes/workflows/editor/nodes/StartNode/StartNode.tsx
+++ b/skyvern-frontend/src/routes/workflows/editor/nodes/StartNode/StartNode.tsx
@@ -26,12 +26,12 @@ import { KeyValueInput } from "@/components/KeyValueInput";
import { OrgWalled } from "@/components/Orgwalled";
import { placeholders } from "@/routes/workflows/editor/helpContent";
import { NodeActionMenu } from "@/routes/workflows/editor/nodes/NodeActionMenu";
+import { useToggleScriptForNodeCallback } from "@/routes/workflows/hooks/useToggleScriptForNodeCallback";
import { useWorkflowSettingsStore } from "@/store/WorkflowSettingsStore";
import {
scriptableWorkflowBlockTypes,
type WorkflowBlockType,
} from "@/routes/workflows/types/workflowTypes";
-// import { useToggleScriptForNodeCallback } from "@/routes/workflows/hooks/useToggleScriptForNodeCallback";
import { Flippable } from "@/components/Flippable";
import { useRerender } from "@/hooks/useRerender";
@@ -42,7 +42,6 @@ function StartNode({ id, data }: NodeProps) {
const workflowSettingsStore = useWorkflowSettingsStore();
const credentialGetter = useCredentialGetter();
const { updateNodeData } = useReactFlow();
- // const toggleScriptForNodeCallback = useToggleScriptForNodeCallback();
const reactFlowInstance = useReactFlow();
const { data: availableModels } = useQuery({
@@ -83,6 +82,7 @@ function StartNode({ id, data }: NodeProps) {
const blockScriptStore = useBlockScriptStore();
const script = blockScriptStore.scripts.__start_block__;
const rerender = useRerender({ prefix: "accordion" });
+ const toggleScriptForNodeCallback = useToggleScriptForNodeCallback();
useEffect(() => {
setFacing(data.showCode ? "back" : "front");
@@ -109,37 +109,31 @@ function StartNode({ id, data }: NodeProps) {
}
function showAllScripts() {
- reactFlowInstance.setNodes((nodes) => {
- return nodes.map((node) => {
- if (nodeIsFlippable(node)) {
- return {
- ...node,
- data: {
- ...node.data,
- showCode: true,
- },
- };
- }
- return node;
- });
- });
+ for (const node of reactFlowInstance.getNodes()) {
+ const label = node.data.label;
+
+ label &&
+ nodeIsFlippable(node) &&
+ typeof label === "string" &&
+ toggleScriptForNodeCallback({
+ label,
+ show: true,
+ });
+ }
}
function hideAllScripts() {
- reactFlowInstance.setNodes((nodes) => {
- return nodes.map((node) => {
- if (nodeIsFlippable(node)) {
- return {
- ...node,
- data: {
- ...node.data,
- showCode: false,
- },
- };
- }
- return node;
- });
- });
+ for (const node of reactFlowInstance.getNodes()) {
+ const label = node.data.label;
+
+ label &&
+ nodeIsFlippable(node) &&
+ typeof label === "string" &&
+ toggleScriptForNodeCallback({
+ label,
+ show: false,
+ });
+ }
}
if (data.withWorkflowSettings) {
@@ -158,7 +152,7 @@ function StartNode({ id, data }: NodeProps) {