import pick from 'lodash/pick'; import React, { useCallback } from 'react'; import PropTypes from 'prop-types'; import { useTranslation } from 'react-i18next'; import { Menu } from 'semantic-ui-react'; import { Popup } from '../../../lib/custom-ui'; import { useSteps } from '../../../hooks'; import UserInformationEditStep from '../../UserInformationEditStep'; import UserUsernameEditStep from '../../UserUsernameEditStep'; import UserEmailEditStep from '../../UserEmailEditStep'; import UserPasswordEditStep from '../../UserPasswordEditStep'; import DeleteStep from '../../DeleteStep'; import styles from './ActionsStep.module.scss'; const StepTypes = { EDIT_INFORMATION: 'EDIT_INFORMATION', EDIT_USERNAME: 'EDIT_USERNAME', EDIT_EMAIL: 'EDIT_EMAIL', EDIT_PASSWORD: 'EDIT_PASSWORD', DELETE: 'DELETE', }; const ActionsStep = React.memo( ({ user, onUpdate, onUsernameUpdate, onUsernameUpdateMessageDismiss, onEmailUpdate, onEmailUpdateMessageDismiss, onPasswordUpdate, onPasswordUpdateMessageDismiss, onDelete, onClose, }) => { const [t] = useTranslation(); const [step, openStep, handleBack] = useSteps(); const handleEditInformationClick = useCallback(() => { openStep(StepTypes.EDIT_INFORMATION); }, [openStep]); const handleEditUsernameClick = useCallback(() => { openStep(StepTypes.EDIT_USERNAME); }, [openStep]); const handleEditEmailClick = useCallback(() => { openStep(StepTypes.EDIT_EMAIL); }, [openStep]); const handleEditPasswordClick = useCallback(() => { openStep(StepTypes.EDIT_PASSWORD); }, [openStep]); const handleDeleteClick = useCallback(() => { openStep(StepTypes.DELETE); }, [openStep]); if (step) { switch (step.type) { case StepTypes.EDIT_INFORMATION: return ( ); case StepTypes.EDIT_USERNAME: return ( ); case StepTypes.EDIT_EMAIL: return ( ); case StepTypes.EDIT_PASSWORD: return ( ); case StepTypes.DELETE: return ( ); default: } } return ( <> {t('common.userActions', { context: 'title', })} {t('action.editInformation', { context: 'title', })} {!user.isLocked && ( <> {t('action.editUsername', { context: 'title', })} {t('action.editEmail', { context: 'title', })} {t('action.editPassword', { context: 'title', })} )} {!user.isLockedAdmin && ( {t('action.deleteUser', { context: 'title', })} )} ); }, ); ActionsStep.propTypes = { user: PropTypes.object.isRequired, // eslint-disable-line react/forbid-prop-types onUpdate: PropTypes.func.isRequired, onUsernameUpdate: PropTypes.func.isRequired, onUsernameUpdateMessageDismiss: PropTypes.func.isRequired, onEmailUpdate: PropTypes.func.isRequired, onEmailUpdateMessageDismiss: PropTypes.func.isRequired, onPasswordUpdate: PropTypes.func.isRequired, onPasswordUpdateMessageDismiss: PropTypes.func.isRequired, onDelete: PropTypes.func.isRequired, onClose: PropTypes.func.isRequired, }; export default ActionsStep;