import React, { FunctionComponent, useCallback } from 'react'; import ListItem from '@mui/material/ListItem'; import Avatar from '@mui/material/Avatar'; import AccessTimeIcon from '@mui/icons-material/AccessTime'; import ListItemButton from '@mui/material/ListItemButton'; import ListItemAvatar from '@mui/material/ListItemAvatar'; import ListItemText from '@mui/material/ListItemText'; import Typography from '@mui/material/Typography'; import Dashboard from 'utils/dashboard'; import { TaskProps } from '../types/taskProps'; import TaskProgress from './TaskProgress'; import TaskLastRan from './TaskLastRan'; import IconButton from '@mui/material/IconButton'; import PlayArrow from '@mui/icons-material/PlayArrow'; import Stop from '@mui/icons-material/Stop'; import { useStartTask } from '../api/useStartTask'; import { useStopTask } from '../api/useStopTask'; const Task: FunctionComponent = ({ task }: TaskProps) => { const startTask = useStartTask(); const stopTask = useStopTask(); const navigateTaskEdit = useCallback(() => { Dashboard.navigate(`/dashboard/tasks/edit?id=${task.Id}`) .catch(err => { console.error('[Task] failed to navigate to task edit page', err); }); }, [task]); const handleStartTask = useCallback(() => { if (task.Id) { startTask.mutate({ taskId: task.Id }); } }, [task, startTask]); const handleStopTask = useCallback(() => { if (task.Id) { stopTask.mutate({ taskId: task.Id }); } }, [task, stopTask]); return ( {task.State == 'Running' ? : } } > {task.Name}} secondary={task.State == 'Running' ? : } disableTypography /> ); }; export default Task;