import React, { useEffect } from 'react'; import { useTranslation } from 'react-i18next'; import { Button, DropdownSkeleton, InlineNotification, ModalBody, ModalFooter, ModalHeader } from '@carbon/react'; import { getCoreTranslation } from '@openmrs/esm-framework'; import { convertTime12to24 } from './time-helpers'; import { transitionQueueEntry } from './queue-entry-actions.resource'; import { useMutateQueueEntries } from '../hooks/useQueueEntries'; import { useQueueEntry } from '../hooks/useQueueEntry'; import { type QueueEntry } from '../types'; import QueueEntryActionModal from './queue-entry-actions-modal.component'; interface MoveQueueEntryModalProps { queueEntry: QueueEntry; closeModal: () => void; } const MoveQueueEntryModal: React.FC = ({ queueEntry, closeModal }) => { const { t } = useTranslation(); const { queueEntry: freshEntry, error, isLoading } = useQueueEntry(queueEntry.uuid); const { mutateQueueEntries } = useMutateQueueEntries(); const isEnded = !isLoading && !error && (!freshEntry || Boolean(freshEntry.endedAt)); useEffect(() => { if (isEnded) { mutateQueueEntries(); } }, [isEnded, mutateQueueEntries]); if (isLoading) { return ( <> ); } if (error) { return ( <> ); } if (isEnded) { return ( <> ); } return ( { const transitionDate = new Date(formState.transitionDate); const [hour, minute] = convertTime12to24(formState.transitionTime, formState.transitionTimeFormat); transitionDate.setHours(hour, minute, 0, 0); return transitionQueueEntry({ queueEntryToTransition: queueEntry.uuid, newQueue: formState.selectedQueue, newStatus: formState.selectedStatus, newPriority: formState.selectedPriority, newPriorityComment: formState.priorityComment, ...(formState.modifyDefaultTransitionDateTime ? { transitionDate: transitionDate.toISOString() } : {}), }); }, disableSubmit: (queueEntry, formState) => formState.selectedQueue === queueEntry.queue.uuid && formState.selectedStatus === queueEntry.status.uuid && formState.selectedPriority === queueEntry.priority.uuid, isEdit: false, showQueuePicker: true, showStatusPicker: false, }} /> ); }; export default MoveQueueEntryModal;