import React from 'react'; import { useRouteMatch } from 'react-router-dom'; import { useIntl } from 'react-intl'; import { get, isEmpty } from 'lodash'; import { BaselineAlignment, useGlobalContext, SizedInput, auth } from 'strapi-helper-plugin'; import { Col } from 'reactstrap'; import { Padded } from '@buffetjs/core'; import PropTypes from 'prop-types'; import PageTitle from '../../../components/SettingsPageTitle'; import ContainerFluid from '../../../components/ContainerFluid'; import FormBloc from '../../../components/FormBloc'; import { Header } from '../../../components/Settings'; import { MagicLink, SelectRoles } from '../../../components/Users'; import { useSettingsForm } from '../../../hooks'; import { editValidation } from '../../../validations/users'; import form from './utils/form'; const EditPage = ({ canUpdate }) => { const { settingsBaseURL } = useGlobalContext(); const { formatMessage } = useIntl(); const { params: { id }, } = useRouteMatch(`${settingsBaseURL}/users/:id`); const cbSuccess = data => { const userInfos = auth.getUserInfo(); // The user is updating themself if (data.id === userInfos.id) { auth.setUserInfo(data); } }; const [ { formErrors, initialData, isLoading, modifiedData, showHeaderButtonLoader, showHeaderLoader }, // eslint-disable-next-line no-unused-vars dispatch, { handleCancel, handleChange, handleSubmit }, ] = useSettingsForm(`/admin/users/${id}`, editValidation, cbSuccess, [ 'email', 'firstname', 'lastname', 'username', 'isActive', 'roles', 'registrationToken', ]); const headerLabelId = isLoading ? 'app.containers.Users.EditPage.header.label-loading' : 'app.containers.Users.EditPage.header.label'; const headerLabelName = initialData.username ? initialData.username : `${initialData.firstname} ${initialData.lastname}`; const headerLabel = formatMessage({ id: headerLabelId }, { name: headerLabelName }); const hasRegistrationToken = modifiedData.registrationToken; const hasRolesError = formErrors.roles && isEmpty(modifiedData.roles); return ( <>
{hasRegistrationToken ? ( <> ) : ( )} {Object.keys(form).map(key => { return ( ); })} {!isLoading && ( )} ); }; EditPage.propTypes = { canUpdate: PropTypes.bool.isRequired, }; export default EditPage;