import React, { useState } from 'react'; import PropTypes from 'prop-types'; import { Modal, ModalFooter, TabPanel, useUser } from 'strapi-helper-plugin'; import { useIntl } from 'react-intl'; import { Button } from '@buffetjs/core'; import { Formik } from 'formik'; import localeFormSchema from '../../schemas'; import { getTrad } from '../../utils'; import SettingsModal from '../SettingsModal'; import useDefaultLocales from '../../hooks/useDefaultLocales'; import useAddLocale from '../../hooks/useAddLocale'; import BaseForm from './BaseForm'; import AdvancedForm from './AdvancedForm'; const ModalCreate = ({ onClose, isOpened }) => { const { defaultLocales, isLoading } = useDefaultLocales(); const { isAdding, addLocale } = useAddLocale(); const { formatMessage } = useIntl(); const [shouldUpdateMenu, setShouldUpdateMenu] = useState(false); const { fetchUserPermissions } = useUser(); if (isLoading) { return (

{formatMessage({ id: getTrad('Settings.locales.modal.create.defaultLocales.loading') })}

); } const handleClosed = async () => { if (shouldUpdateMenu) { await fetchUserPermissions(); } setShouldUpdateMenu(false); }; const options = (defaultLocales || []).map(locale => ({ label: locale.code, value: locale.name, })); const defaultOption = options[0]; if (!defaultOption) { return null; } return ( addLocale({ code: values.code, name: values.displayName, isDefault: values.isDefault, }) .then(() => setShouldUpdateMenu(true)) .then(() => { onClose(); })} validationSchema={localeFormSchema} > {({ handleSubmit, errors }) => (
)}
); }; ModalCreate.propTypes = { onClose: PropTypes.func.isRequired, isOpened: PropTypes.bool.isRequired, }; export default ModalCreate;