import { useEffect, useState } from 'react'; import { Progress } from '@heroui/react'; import { useTaskStatus } from '../hooks'; import { taskHelpers } from '../helpers'; interface TaskProgressProps { taskId: string; taskType: string; progressAriaLabel?: string; onComplete?: (status: 'success' | 'error', error?: string) => void; } export default function TaskProgress({ taskId, taskType, progressAriaLabel = 'Task progress', onComplete, }: TaskProgressProps) { const { taskInfo, error } = useTaskStatus(taskId, taskType); useEffect(() => { if (taskInfo && taskHelpers.isTaskComplete(taskInfo) && onComplete) { onComplete(taskInfo.state, taskHelpers.formatTaskError(taskInfo)); } }, [taskInfo, onComplete]); if (error) { return (

{`Error: ${error.message}`}

); } if (!taskInfo) { return (

Loading task information...

); } if (taskInfo.state === 'running') { return (
); } if (taskInfo.state === 'error') { return (

{taskHelpers.formatTaskError(taskInfo)}

); } if (taskInfo.state === 'success') { return (

Task completed successfully.

); } return (

Task status: {taskInfo.state}.

); }