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}`}
Loading task information...
{taskHelpers.formatTaskError(taskInfo)}
Task completed successfully.
Task status: {taskInfo.state}.