import { getClient } from "@/api/AxiosClient"; import { Status } from "@/api/types"; import { Button } from "@/components/ui/button"; import { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, } from "@/components/ui/dialog"; import { Label } from "@/components/ui/label"; import { Skeleton } from "@/components/ui/skeleton"; import { Textarea } from "@/components/ui/textarea"; import { toast } from "@/components/ui/use-toast"; import { useCredentialGetter } from "@/hooks/useCredentialGetter"; import { cn } from "@/util/utils"; import { ReloadIcon } from "@radix-ui/react-icons"; import { useMutation, useQueryClient } from "@tanstack/react-query"; import { NavLink, Outlet, useParams } from "react-router-dom"; import { TaskInfo } from "./TaskInfo"; import { useTaskQuery } from "./hooks/useTaskQuery"; function TaskDetails() { const { taskId } = useParams(); const credentialGetter = useCredentialGetter(); const queryClient = useQueryClient(); const { data: task, isLoading: taskIsLoading, isError: taskIsError, error: taskError, } = useTaskQuery({ id: taskId }); const cancelTaskMutation = useMutation({ mutationFn: async () => { const client = await getClient(credentialGetter); return client .post(`/tasks/${taskId}/cancel`) .then((response) => response.data); }, onSuccess: () => { queryClient.invalidateQueries({ queryKey: ["task", taskId], }); queryClient.invalidateQueries({ queryKey: ["tasks"], }); toast({ variant: "success", title: "Task Canceled", description: "The task has been successfully canceled.", }); }, onError: (error) => { toast({ variant: "destructive", title: "Error", description: error.message, }); }, }); if (taskIsError) { return
Error: {taskError?.message}
; } const showExtractedInformation = task?.status === Status.Completed && task.extracted_information !== null; const extractedInformation = showExtractedInformation ? (