All files / src/stock-locations add-location.modal.tsx

100% Statements 14/14
100% Branches 0/0
100% Functions 4/4
100% Lines 14/14

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69                          1x 3x 3x   3x           3x   3x   3x       3x   2x                 2x 2x     1x 1x                     3x                    
import React, { useCallback } from 'react';
import { useTranslation } from 'react-i18next';
import { showSnackbar } from '@openmrs/esm-framework';
import { saveLocation } from './stock-locations-table.resource';
import { type locationData } from '../stock-items/types';
import { extractErrorMessagesFromResponse } from '../constants';
import LocationAdministrationForm from './location-admin-form.component';
 
interface LocationFormProps {
  close: () => void;
  mutate: () => void;
}
 
const NewLocationForm: React.FC<LocationFormProps> = ({ close, mutate }) => {
  const { t } = useTranslation();
  const headerTitle = t('addLocation', 'Create new Location');
 
  const initialData: locationData = {
    uuid: '',
    name: '',
    tags: [],
  };
 
  const handleCreateQuestion = useCallback(
    (formData: locationData) => {
      const { name, tags } = formData;
 
      const locationbject = {
        name,
        tags,
      };
      return saveLocation({ locationPayload: locationbject })
        .then(() => {
          showSnackbar({
            title: t('locationCreatedTitle', 'Location created'),
            kind: 'success',
            isLowContrast: true,
            subtitle: t('locationCreatedSuccessfully', 'Location {{locationName}} was created successfully.', {
              locationName: name,
            }),
          });
 
          mutate();
          close();
        })
        .catch((error) => {
          const errorMessages = extractErrorMessagesFromResponse(error);
          showSnackbar({
            title: t('errorCreatingForm', 'Error creating location'),
            kind: 'error',
            isLowContrast: true,
            subtitle: errorMessages.join(', '),
          });
        });
    },
    [close, mutate, t],
  );
 
  return (
    <LocationAdministrationForm
      close={close}
      handleCreateQuestion={handleCreateQuestion}
      headerTitle={headerTitle}
      initialData={initialData}
    />
  );
};
export default NewLocationForm;