import classnames from 'classnames'; import PropTypes from 'prop-types'; import React, { useState } from 'react'; import { flatten } from 'lodash'; import CheckBox from '../../ui/check-box'; import { useI18nContext } from '../../../hooks/useI18nContext'; import { getPermissionDescription } from '../../../helpers/utils/permission'; const ConnectedAccountsPermissions = ({ permissions }) => { const t = useI18nContext(); const [expanded, setExpanded] = useState(false); const toggleExpanded = () => { setExpanded((_expanded) => !_expanded); }; if (!permissions.length) { return null; } const permissionLabels = flatten( permissions.map(({ key, value }) => getPermissionDescription({ t, permissionName: key, permissionValue: value, }), ), ); return ( <div className="connected-accounts-permissions"> <p className="connected-accounts-permissions__header" onClick={toggleExpanded} > <strong>{t('permissions')}</strong> <button className={classnames('fas', { 'fa-angle-down': !expanded, 'fa-angle-up': expanded, })} title={t('showPermissions')} /> </p> <div className={classnames( 'connected-accounts-permissions__list-container', { 'connected-accounts-permissions__list-container--expanded': expanded, }, )} > <p>{t('authorizedPermissions')}:</p> <ul className="connected-accounts-permissions__list"> {permissionLabels.map(({ label }, idx) => ( <li key={`connected-permission-${idx}`} className="connected-accounts-permissions__list-item" > <CheckBox checked disabled id={`connected-permission-${idx}`} className="connected-accounts-permissions__checkbox" /> <label htmlFor={`connected-permission-${idx}`}>{label}</label> </li> ))} </ul> </div> </div> ); }; ConnectedAccountsPermissions.propTypes = { permissions: PropTypes.arrayOf( PropTypes.shape({ key: PropTypes.string.isRequired, }), ), }; ConnectedAccountsPermissions.defaultProps = { permissions: [], }; ConnectedAccountsPermissions.displayName = 'ConnectedAccountsPermissions'; export default React.memo(ConnectedAccountsPermissions);