From 9f7ec07bb6f2b1b21642d4e62197292ca3b606b1 Mon Sep 17 00:00:00 2001 From: Shuchang Zheng Date: Mon, 14 Oct 2024 08:50:03 -0700 Subject: [PATCH] Navigate to task form when generating task from prompt (#968) --- .../tasks/create/CreateNewTaskFormPage.tsx | 40 ++++++++++++++++- .../src/routes/tasks/create/PromptBox.tsx | 43 +++---------------- 2 files changed, 44 insertions(+), 39 deletions(-) diff --git a/skyvern-frontend/src/routes/tasks/create/CreateNewTaskFormPage.tsx b/skyvern-frontend/src/routes/tasks/create/CreateNewTaskFormPage.tsx index 75e2f441..5733f7d2 100644 --- a/skyvern-frontend/src/routes/tasks/create/CreateNewTaskFormPage.tsx +++ b/skyvern-frontend/src/routes/tasks/create/CreateNewTaskFormPage.tsx @@ -1,16 +1,17 @@ import { getClient } from "@/api/AxiosClient"; import { useCredentialGetter } from "@/hooks/useCredentialGetter"; import { useQuery } from "@tanstack/react-query"; -import { useParams } from "react-router-dom"; +import { useLocation, useParams } from "react-router-dom"; import { getSampleForInitialFormValues } from "../data/sampleTaskData"; import { SampleCase, sampleCases } from "../types"; import { CreateNewTaskForm } from "./CreateNewTaskForm"; import { SavedTaskForm } from "./SavedTaskForm"; -import { WorkflowParameter } from "@/api/types"; +import { TaskGenerationApiResponse, WorkflowParameter } from "@/api/types"; function CreateNewTaskFormPage() { const { template } = useParams(); const credentialGetter = useCredentialGetter(); + const location = useLocation(); const { data, isFetching } = useQuery({ queryKey: ["savedTask", template], @@ -29,6 +30,41 @@ function CreateNewTaskFormPage() { return
Invalid template
; } + if (template === "from-prompt") { + const data = location.state?.data as TaskGenerationApiResponse; + if (!data.url) { + return
Something went wrong, please try again
; // this should never happen + } + return ( +
+
+

Create New Task

+
+ +
+ ); + } + if (sampleCases.includes(template as SampleCase)) { return (
diff --git a/skyvern-frontend/src/routes/tasks/create/PromptBox.tsx b/skyvern-frontend/src/routes/tasks/create/PromptBox.tsx index 2b5662b4..10571600 100644 --- a/skyvern-frontend/src/routes/tasks/create/PromptBox.tsx +++ b/skyvern-frontend/src/routes/tasks/create/PromptBox.tsx @@ -16,19 +16,6 @@ import { ScrollBar, } from "@/components/ui/scroll-area"; -function createTaskFromTaskGenerationParameters( - values: TaskGenerationApiResponse, -) { - return { - url: values.url, - navigation_goal: values.navigation_goal, - data_extraction_goal: values.data_extraction_goal, - proxy_location: "RESIDENTIAL", - navigation_payload: values.navigation_payload, - extracted_information_schema: values.extracted_information_schema, - }; -} - function createTemplateTaskFromTaskGenerationParameters( values: TaskGenerationApiResponse, ) { @@ -120,27 +107,6 @@ function PromptBox() { }, }); - const runTaskMutation = useMutation({ - mutationFn: async (params: TaskGenerationApiResponse) => { - const client = await getClient(credentialGetter); - const data = createTaskFromTaskGenerationParameters(params); - return client.post< - ReturnType, - { data: { task_id: string } } - >("/tasks", data); - }, - onSuccess: (response) => { - navigate(`/tasks/${response.data.task_id}/actions`); - }, - onError: (error: AxiosError) => { - toast({ - variant: "destructive", - title: "Error running task", - description: error.message, - }); - }, - }); - return (
{getTaskFromPromptMutation.isPending || - saveTaskMutation.isPending || - runTaskMutation.isPending ? ( + saveTaskMutation.isPending ? ( ) : ( )}