Remember task node mode as advanced or basic in local storage (#916)
This commit is contained in:
@@ -29,21 +29,34 @@ import { NodeActionMenu } from "../NodeActionMenu";
|
|||||||
import { TaskNodeDisplayModeSwitch } from "./TaskNodeDisplayModeSwitch";
|
import { TaskNodeDisplayModeSwitch } from "./TaskNodeDisplayModeSwitch";
|
||||||
import { TaskNodeParametersPanel } from "./TaskNodeParametersPanel";
|
import { TaskNodeParametersPanel } from "./TaskNodeParametersPanel";
|
||||||
import type { TaskNode, TaskNodeDisplayMode } from "./types";
|
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<TaskNode>) {
|
function TaskNode({ id, data }: NodeProps<TaskNode>) {
|
||||||
const { updateNodeData } = useReactFlow();
|
const { updateNodeData } = useReactFlow();
|
||||||
const [displayMode, setDisplayMode] = useState<TaskNodeDisplayMode>("basic");
|
const { workflowPermanentId } = useParams();
|
||||||
const { editable } = data;
|
const { editable } = data;
|
||||||
const deleteNodeCallback = useDeleteNodeCallback();
|
const deleteNodeCallback = useDeleteNodeCallback();
|
||||||
const nodes = useNodes<AppNode>();
|
const nodes = useNodes<AppNode>();
|
||||||
const edges = useEdges();
|
const edges = useEdges();
|
||||||
const outputParameterKeys = getAvailableOutputParameterKeys(nodes, edges, id);
|
const outputParameterKeys = getAvailableOutputParameterKeys(nodes, edges, id);
|
||||||
|
|
||||||
const [label, setLabel] = useNodeLabelChangeHandler({
|
const [label, setLabel] = useNodeLabelChangeHandler({
|
||||||
id,
|
id,
|
||||||
initialValue: data.label,
|
initialValue: data.label,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const [displayMode, setDisplayMode] = useState<TaskNodeDisplayMode>(
|
||||||
|
workflowPermanentId &&
|
||||||
|
localStorage.getItem(getLocalStorageKey(workflowPermanentId, label))
|
||||||
|
? (localStorage.getItem(
|
||||||
|
getLocalStorageKey(workflowPermanentId, label),
|
||||||
|
) as TaskNodeDisplayMode)
|
||||||
|
: "basic",
|
||||||
|
);
|
||||||
|
|
||||||
const [inputs, setInputs] = useState({
|
const [inputs, setInputs] = useState({
|
||||||
url: data.url,
|
url: data.url,
|
||||||
navigationGoal: data.navigationGoal,
|
navigationGoal: data.navigationGoal,
|
||||||
@@ -404,7 +417,15 @@ function TaskNode({ id, data }: NodeProps<TaskNode>) {
|
|||||||
</div>
|
</div>
|
||||||
<TaskNodeDisplayModeSwitch
|
<TaskNodeDisplayModeSwitch
|
||||||
value={displayMode}
|
value={displayMode}
|
||||||
onChange={setDisplayMode}
|
onChange={(mode) => {
|
||||||
|
setDisplayMode(mode);
|
||||||
|
if (workflowPermanentId) {
|
||||||
|
localStorage.setItem(
|
||||||
|
getLocalStorageKey(workflowPermanentId, label),
|
||||||
|
mode,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
{displayMode === "basic" && basicContent}
|
{displayMode === "basic" && basicContent}
|
||||||
|
|||||||
Reference in New Issue
Block a user