/**
*
* ListRow
*
*/
import React from 'react';
import cn from 'classnames';
import PropTypes from 'prop-types';
import { FormattedMessage } from 'react-intl';
import { get, includes } from 'lodash';
import { router } from 'app';
// Design
import IcoContainer from 'components/IcoContainer';
import PopUpWarning from 'components/PopUpWarning';
import en from 'translations/en.json';
import styles from './styles.scss';
class ListRow extends React.Component { // eslint-disable-line react/prefer-stateless-function
state = { showModalDelete: false };
// Roles that can't be deleted && modified
// Don't delete this line
protectedRoleIDs = ['0'];
// Roles that can't be deleted;
undeletableIDs = ['1'];
generateContent = () => {
let icons = [
{
icoType: 'pencil',
onClick: this.handleClick,
},
{
icoType: 'trash',
onClick: () => { this.setState({ showModalDelete: true }); },
},
];
switch (this.props.settingType) {
case 'roles':
if (includes(this.protectedRoleIDs, get(this.props.item, 'id', '').toString())) {
icons = [];
}
if (includes(this.undeletableIDs, get(this.props.item, 'id', '').toString())) {
icons = [{ icoType: 'pencil', onClick: this.handleClick }];
}
return (
{this.props.item.name}
{this.props.item.description}
{this.props.item.nb_users || 0}
{this.props.item.nb_users > 1 ? (
'users'
) : (
'user'
)}
);
case 'providers':
return (
{this.props.item.enabled ? (
Enabled
) : (
Disabled
)}
);
case 'email-templates':
icons = [
{
icoType: 'pencil',
onClick: this.handleClick,
},
];
return (
{this.props.item.display && en[this.props.item.display] ? (
): this.props.item.name}
);
default:
return '';
}
}
handleClick = () => {
// TODO open modal and pass data
switch (this.props.settingType) {
case 'roles': {
if (!includes(this.protectedRoleIDs, get(this.props.item, 'id').toString())) {
return router.push(`${router.location.pathname}/edit/${this.props.item.id}`);
}
return;
}
case 'providers':
case 'email-templates':
return this.context.setDataToEdit(this.props.item.name);
default:
return;
}
}
handleDelete = () => {
this.props.deleteData(this.props.item, this.props.settingType);
this.setState({ showModalDelete: false });
}
render() {
return (
{this.generateContent()}
this.setState({ showModalDelete: false })}
/>
);
}
}
ListRow.contextTypes = {
setDataToEdit: PropTypes.func.isRequired,
};
ListRow.defaultProps = {
item: {
name: 'Owner',
description: 'Rule them all. This role can\'t be deleted',
nb_users: 1,
icon: 'envelope',
},
settingType: 'roles',
};
ListRow.propTypes = {
deleteData: PropTypes.func.isRequired,
item: PropTypes.object,
settingType: PropTypes.string,
};
export default ListRow;