import React, { useCallback, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { Button, Form, ModalBody, ModalFooter, ModalHeader } from '@carbon/react'; import { showSnackbar, useConfig, type Visit } from '@openmrs/esm-framework'; import { useMutateQueueEntries } from '../../hooks/useQueueEntries'; import QueueFields from '../../create-queue-entry/queue-fields/queue-fields.component'; import { type ConfigObject } from '../../config-schema'; interface AddPatientToQueueModalProps { modalTitle: string; activeVisit: Visit; closeModal: () => void; } const AddPatientToQueueModal: React.FC = ({ modalTitle, activeVisit, closeModal }) => { const { t } = useTranslation(); const { mutateQueueEntries } = useMutateQueueEntries(); const config = useConfig(); const [isSubmitting, setIsSubmitting] = useState(false); const [callback, setCallback] = useState<{ submitQueueEntry: (visit: Visit) => Promise; } | null>(null); const handleSubmit = useCallback( (event) => { event.preventDefault(); setIsSubmitting(true); callback ?.submitQueueEntry?.(activeVisit) ?.then(() => { closeModal(); mutateQueueEntries(); }) ?.catch((error) => { showSnackbar({ title: t('queueEntryError', 'Error adding patient to the queue'), kind: 'error', isLowContrast: false, subtitle: error?.message, }); }) ?.finally(() => { setIsSubmitting(false); }); }, [callback, activeVisit, closeModal, mutateQueueEntries, t], ); return (
setCallback({ submitQueueEntry: onSubmit })} defaultInitialServiceQueue={config.defaultInitialServiceQueue} /> ); }; export default AddPatientToQueueModal;