import React, { useCallback } from 'react'; import PropTypes from 'prop-types'; import { useTranslation } from 'react-i18next'; import { Button, Modal, Table } from 'semantic-ui-react'; import UserAddPopupContainer from '../../containers/UserAddPopupContainer'; import Item from './Item'; const UsersModal = React.memo( ({ items, onUpdate, onUsernameUpdate, onUsernameUpdateMessageDismiss, onEmailUpdate, onEmailUpdateMessageDismiss, onPasswordUpdate, onPasswordUpdateMessageDismiss, onDelete, onClose, }) => { const [t] = useTranslation(); const handleUpdate = useCallback( (id, data) => { onUpdate(id, data); }, [onUpdate], ); const handleUsernameUpdate = useCallback( (id, data) => { onUsernameUpdate(id, data); }, [onUsernameUpdate], ); const handleUsernameUpdateMessageDismiss = useCallback( (id) => { onUsernameUpdateMessageDismiss(id); }, [onUsernameUpdateMessageDismiss], ); const handleEmailUpdate = useCallback( (id, data) => { onEmailUpdate(id, data); }, [onEmailUpdate], ); const handleEmailUpdateMessageDismiss = useCallback( (id) => { onEmailUpdateMessageDismiss(id); }, [onEmailUpdateMessageDismiss], ); const handlePasswordUpdate = useCallback( (id, data) => { onPasswordUpdate(id, data); }, [onPasswordUpdate], ); const handlePasswordUpdateMessageDismiss = useCallback( (id) => { onPasswordUpdateMessageDismiss(id); }, [onPasswordUpdateMessageDismiss], ); const handleDelete = useCallback( (id) => { onDelete(id); }, [onDelete], ); return ( {t('common.users', { context: 'title', })} {t('common.name')} {t('common.username')} {t('common.email')} {t('common.administrator')} {items.map((item) => ( handleUpdate(item.id, data)} onUsernameUpdate={(data) => handleUsernameUpdate(item.id, data)} onUsernameUpdateMessageDismiss={() => handleUsernameUpdateMessageDismiss(item.id)} onEmailUpdate={(data) => handleEmailUpdate(item.id, data)} onEmailUpdateMessageDismiss={() => handleEmailUpdateMessageDismiss(item.id)} onPasswordUpdate={(data) => handlePasswordUpdate(item.id, data)} onPasswordUpdateMessageDismiss={() => handlePasswordUpdateMessageDismiss(item.id)} onDelete={() => handleDelete(item.id)} /> ))}