import React, { useEffect } from 'react'; import { Modal } from 'react-bootstrap'; import { CSSTransition } from 'react-transition-group'; import type { TaskMonitor } from './TaskMonitor'; import { TaskMonitorError } from './TaskMonitorError'; import { TaskMonitorStatus } from './TaskMonitorStatus'; import { useForceUpdate } from '../../presentation/hooks'; export interface ITaskMonitorProps { monitor: TaskMonitor; } export const TaskMonitorWrapper = ({ monitor }: ITaskMonitorProps) => { const forceUpdate = useForceUpdate(); useEffect(() => { const subscription = monitor?.statusUpdatedStream?.subscribe(() => forceUpdate()); return () => subscription?.unsubscribe(); }, [monitor]); if (!monitor || (!monitor.submitting && !monitor.error)) { return null; } return (
{monitor.title}
{monitor.task && (
)}
{!monitor.error && ( )} {monitor.error && ( )}
); };