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 { type QueueEntry } from '../types'; import { updateQueueEntry } from './queue-entry-actions.resource'; import { useMutateQueueEntries } from '../hooks/useQueueEntries'; import { useQueueEntry } from '../hooks/useQueueEntry'; import { useQueues } from '../hooks/useQueues'; import QueueEntryActionModal from './queue-entry-actions-modal.component'; interface EditQueueEntryModalProps { queueEntry: QueueEntry; closeModal: () => void; } const EditQueueEntryModal: React.FC = ({ queueEntry, closeModal }) => { const { t } = useTranslation(); const { queues } = useQueues(); 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 selectedQueue = queues.find((q) => q.uuid === formState.selectedQueue); const statuses = selectedQueue?.allowedStatuses; const priorities = selectedQueue?.allowedPriorities; const startAtDate = new Date(formState.transitionDate); const [hour, minute] = convertTime12to24(formState.transitionTime, formState.transitionTimeFormat); startAtDate.setHours(hour, minute, 0, 0); return updateQueueEntry(queueEntry.uuid, { status: statuses.find((s) => s.uuid === formState.selectedStatus), priority: priorities.find((p) => p.uuid === formState.selectedPriority), priorityComment: formState.priorityComment, ...(formState.modifyDefaultTransitionDateTime ? { startedAt: startAtDate.toISOString() } : {}), }); }, disableSubmit: () => false, isEdit: true, showQueuePicker: true, showStatusPicker: true, }} /> ); }; export default EditQueueEntryModal;