import PropTypes from 'prop-types';
import React, { PureComponent } from 'react';
import PermissionsConnectHeader from '../../permissions-connect-header';
import Tooltip from '../../../ui/tooltip';
import PermissionsConnectPermissionList from '../../permissions-connect-permission-list';
export default class PermissionPageContainerContent extends PureComponent {
static propTypes = {
subjectMetadata: PropTypes.shape({
name: PropTypes.string.isRequired,
origin: PropTypes.string.isRequired,
subjectType: PropTypes.string.isRequired,
extensionId: PropTypes.string,
iconUrl: PropTypes.string,
}),
selectedPermissions: PropTypes.object.isRequired,
selectedIdentities: PropTypes.array,
allIdentitiesSelected: PropTypes.bool,
};
static defaultProps = {
selectedIdentities: [],
allIdentitiesSelected: false,
};
static contextTypes = {
t: PropTypes.func,
};
renderRequestedPermissions() {
const { selectedPermissions } = this.props;
return (
);
}
renderAccountTooltip(textContent) {
const { selectedIdentities } = this.props;
const { t } = this.context;
return (
{selectedIdentities.slice(0, 6).map((identity, index) => {
return (
{identity.addressLabel}
);
})}
{selectedIdentities.length > 6
? t('plusXMore', [selectedIdentities.length - 6])
: null}
}
>
{textContent}
);
}
getTitle() {
const {
subjectMetadata,
selectedIdentities,
allIdentitiesSelected,
selectedPermissions,
} = this.props;
const { t } = this.context;
if (subjectMetadata.extensionId) {
return t('externalExtension', [subjectMetadata.extensionId]);
} else if (!selectedPermissions.eth_accounts) {
return t('permissionRequestCapitalized');
} else if (allIdentitiesSelected) {
return t('connectToAll', [
this.renderAccountTooltip(t('connectToAllAccounts')),
]);
} else if (selectedIdentities.length > 1) {
return t('connectToMultiple', [
this.renderAccountTooltip(
t('connectToMultipleNumberOfAccounts', [selectedIdentities.length]),
),
]);
}
return t('connectTo', [selectedIdentities[0]?.addressLabel]);
}
render() {
const { subjectMetadata } = this.props;
const { t } = this.context;
const title = this.getTitle();
return (
{this.renderRequestedPermissions()}
);
}
}