diff --git a/skyvern-frontend/src/routes/workflows/editor/nodes/TaskNode/TaskNode.tsx b/skyvern-frontend/src/routes/workflows/editor/nodes/TaskNode/TaskNode.tsx index 8d2a649d..2f3dfdc0 100644 --- a/skyvern-frontend/src/routes/workflows/editor/nodes/TaskNode/TaskNode.tsx +++ b/skyvern-frontend/src/routes/workflows/editor/nodes/TaskNode/TaskNode.tsx @@ -29,21 +29,34 @@ import { NodeActionMenu } from "../NodeActionMenu"; import { TaskNodeDisplayModeSwitch } from "./TaskNodeDisplayModeSwitch"; import { TaskNodeParametersPanel } from "./TaskNodeParametersPanel"; import type { TaskNode, TaskNodeDisplayMode } from "./types"; +import { useParams } from "react-router-dom"; + +function getLocalStorageKey(workflowPermanentId: string, label: string) { + return `skyvern-task-block-${workflowPermanentId}-${label}`; +} function TaskNode({ id, data }: NodeProps) { const { updateNodeData } = useReactFlow(); - const [displayMode, setDisplayMode] = useState("basic"); + const { workflowPermanentId } = useParams(); const { editable } = data; const deleteNodeCallback = useDeleteNodeCallback(); const nodes = useNodes(); const edges = useEdges(); const outputParameterKeys = getAvailableOutputParameterKeys(nodes, edges, id); - const [label, setLabel] = useNodeLabelChangeHandler({ id, initialValue: data.label, }); + const [displayMode, setDisplayMode] = useState( + workflowPermanentId && + localStorage.getItem(getLocalStorageKey(workflowPermanentId, label)) + ? (localStorage.getItem( + getLocalStorageKey(workflowPermanentId, label), + ) as TaskNodeDisplayMode) + : "basic", + ); + const [inputs, setInputs] = useState({ url: data.url, navigationGoal: data.navigationGoal, @@ -404,7 +417,15 @@ function TaskNode({ id, data }: NodeProps) { { + setDisplayMode(mode); + if (workflowPermanentId) { + localStorage.setItem( + getLocalStorageKey(workflowPermanentId, label), + mode, + ); + } + }} /> {displayMode === "basic" && basicContent}