import { client } from "@/api/AxiosClient"; import { Status, TaskApiResponse } from "@/api/types"; import { Label } from "@/components/ui/label"; import { Textarea } from "@/components/ui/textarea"; import { useQuery } from "@tanstack/react-query"; import { useParams } from "react-router-dom"; import { Accordion, AccordionContent, AccordionItem, AccordionTrigger, } from "@/components/ui/accordion"; import { StatusBadge } from "@/components/StatusBadge"; import { artifactApiBaseUrl } from "@/util/env"; import { Button } from "@/components/ui/button"; import { ReloadIcon } from "@radix-ui/react-icons"; import { basicTimeFormat } from "@/util/timeFormat"; import { StepArtifactsLayout } from "./StepArtifactsLayout"; import Zoom from "react-medium-image-zoom"; import { AspectRatio } from "@/components/ui/aspect-ratio"; function TaskDetails() { const { taskId } = useParams(); const { data: task, isFetching: isTaskFetching, isError: isTaskError, error: taskError, refetch, } = useQuery({ queryKey: ["task", taskId, "details"], queryFn: async () => { return client.get(`/tasks/${taskId}`).then((response) => response.data); }, }); if (isTaskError) { return
Error: {taskError?.message}
; } if (isTaskFetching) { return
Loading...
; // TODO: skeleton } if (!task) { return
Task not found
; } return (
{task.recording_url ? (
) : null}
{task.status === Status.Completed ? (