1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-12-23 09:52:26 +01:00

Localize permission descriptions (#8661)

This commit is contained in:
Whymarrh Whitby 2020-05-27 18:15:10 -02:30 committed by GitHub
parent a0d64c7932
commit 4802ed1df5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 8 additions and 29 deletions

View File

@ -1,4 +1,8 @@
{ {
"eth_accounts": {
"message": "View your public address (required)",
"description": "The description for the `eth_accounts` permission"
},
"connectedSites": { "connectedSites": {
"message": "Connected sites" "message": "Connected sites"
}, },

View File

@ -1,8 +1,6 @@
export default function getRestrictedMethods ({ getIdentities, getKeyringAccounts }) { export default function getRestrictedMethods ({ getIdentities, getKeyringAccounts }) {
return { return {
'eth_accounts': { 'eth_accounts': {
description: `View your public address (required)`,
method: (_, res, __, end) => { method: (_, res, __, end) => {
getKeyringAccounts() getKeyringAccounts()
.then((accounts) => { .then((accounts) => {

View File

@ -14,7 +14,6 @@ export default class ConnectedAccountsListPermissions extends PureComponent {
static propTypes = { static propTypes = {
permissions: PropTypes.arrayOf(PropTypes.shape({ permissions: PropTypes.arrayOf(PropTypes.shape({
key: PropTypes.string.isRequired, key: PropTypes.string.isRequired,
description: PropTypes.string.isRequired,
})), })),
} }
@ -56,9 +55,9 @@ export default class ConnectedAccountsListPermissions extends PureComponent {
> >
<p>{t('authorizedPermissions')}:</p> <p>{t('authorizedPermissions')}:</p>
<ul className="connected-accounts-permissions__list"> <ul className="connected-accounts-permissions__list">
{permissions.map(({ key, description }) => ( {permissions.map(({ key }) => (
<li key={key} className="connected-accounts-permissions__list-item"> <li key={key} className="connected-accounts-permissions__list-item">
<i className="fas fa-check-square" />&nbsp;{description} <i className="fas fa-check-square" />&nbsp;{t(key)}
</li> </li>
))} ))}
</ul> </ul>

View File

@ -28,7 +28,6 @@ export default class ConnectedAccountsList extends PureComponent {
})).isRequired, })).isRequired,
permissions: PropTypes.arrayOf(PropTypes.shape({ permissions: PropTypes.arrayOf(PropTypes.shape({
key: PropTypes.string.isRequired, key: PropTypes.string.isRequired,
description: PropTypes.string.isRequired,
})), })),
selectedAddress: PropTypes.string.isRequired, selectedAddress: PropTypes.string.isRequired,
addPermittedAccount: PropTypes.func.isRequired, addPermittedAccount: PropTypes.func.isRequired,

View File

@ -10,7 +10,6 @@ export default class PermissionPageContainerContent extends PureComponent {
static propTypes = { static propTypes = {
domainMetadata: PropTypes.object.isRequired, domainMetadata: PropTypes.object.isRequired,
selectedPermissions: PropTypes.object.isRequired, selectedPermissions: PropTypes.object.isRequired,
permissionsDescriptions: PropTypes.object.isRequired,
onPermissionToggle: PropTypes.func.isRequired, onPermissionToggle: PropTypes.func.isRequired,
selectedIdentities: PropTypes.array, selectedIdentities: PropTypes.array,
allIdentitiesSelected: PropTypes.bool, allIdentitiesSelected: PropTypes.bool,
@ -64,17 +63,13 @@ export default class PermissionPageContainerContent extends PureComponent {
renderRequestedPermissions () { renderRequestedPermissions () {
const { const {
selectedPermissions, permissionsDescriptions, onPermissionToggle, selectedPermissions, onPermissionToggle,
} = this.props } = this.props
const { t } = this.context const { t } = this.context
const items = Object.keys(selectedPermissions).map((methodName) => { const items = Object.keys(selectedPermissions).map((methodName) => {
// the request will almost certainly be reject by rpc-cap if this happens const description = t(methodName)
if (!permissionsDescriptions[methodName]) {
console.warn(`Unknown permission requested: ${methodName}`)
}
const description = permissionsDescriptions[methodName] || methodName
// don't allow deselecting eth_accounts // don't allow deselecting eth_accounts
const isDisabled = methodName === 'eth_accounts' const isDisabled = methodName === 'eth_accounts'

View File

@ -12,7 +12,6 @@ export default class PermissionPageContainer extends Component {
rejectPermissionsRequest: PropTypes.func.isRequired, rejectPermissionsRequest: PropTypes.func.isRequired,
selectedIdentities: PropTypes.array, selectedIdentities: PropTypes.array,
allIdentitiesSelected: PropTypes.bool, allIdentitiesSelected: PropTypes.bool,
permissionsDescriptions: PropTypes.object.isRequired,
request: PropTypes.object, request: PropTypes.object,
redirect: PropTypes.bool, redirect: PropTypes.bool,
permissionRejected: PropTypes.bool, permissionRejected: PropTypes.bool,
@ -116,7 +115,6 @@ export default class PermissionPageContainer extends Component {
const { const {
requestMetadata, requestMetadata,
targetDomainMetadata, targetDomainMetadata,
permissionsDescriptions,
selectedIdentities, selectedIdentities,
redirect, redirect,
permissionRejected, permissionRejected,
@ -129,7 +127,6 @@ export default class PermissionPageContainer extends Component {
requestMetadata={requestMetadata} requestMetadata={requestMetadata}
domainMetadata={targetDomainMetadata} domainMetadata={targetDomainMetadata}
selectedPermissions={this.state.selectedPermissions} selectedPermissions={this.state.selectedPermissions}
permissionsDescriptions={permissionsDescriptions}
onPermissionToggle={this.onPermissionToggle} onPermissionToggle={this.onPermissionToggle}
selectedIdentities={selectedIdentities} selectedIdentities={selectedIdentities}
redirect={redirect} redirect={redirect}

View File

@ -1,7 +1,6 @@
import { connect } from 'react-redux' import { connect } from 'react-redux'
import PermissionPageContainer from './permission-page-container.component' import PermissionPageContainer from './permission-page-container.component'
import { import {
getPermissionsDescriptions,
getTargetDomainMetadata, getTargetDomainMetadata,
getMetaMaskIdentities, getMetaMaskIdentities,
} from '../../../selectors' } from '../../../selectors'
@ -14,7 +13,6 @@ const mapStateToProps = (state, ownProps) => {
const allIdentitiesSelected = Object.keys(selectedIdentities).length === Object.keys(allIdentities).length && selectedIdentities.length > 1 const allIdentitiesSelected = Object.keys(selectedIdentities).length === Object.keys(allIdentities).length && selectedIdentities.length > 1
return { return {
permissionsDescriptions: getPermissionsDescriptions(state),
targetDomainMetadata, targetDomainMetadata,
allIdentitiesSelected, allIdentitiesSelected,
} }

View File

@ -241,14 +241,11 @@ export function getPermissionsForActiveTab (state) {
const { activeTab, metamask } = state const { activeTab, metamask } = state
const { const {
domains = {}, domains = {},
permissionsDescriptions,
} = metamask } = metamask
return domains[activeTab.origin]?.permissions?.map(({ parentCapability }) => { return domains[activeTab.origin]?.permissions?.map(({ parentCapability }) => {
const description = permissionsDescriptions[parentCapability]
return { return {
key: parentCapability, key: parentCapability,
description,
} }
}) })
} }

View File

@ -302,10 +302,6 @@ export function getCustomNonceValue (state) {
return String(state.metamask.customNonceValue) return String(state.metamask.customNonceValue)
} }
export function getPermissionsDescriptions (state) {
return state.metamask.permissionsDescriptions
}
export function getPermissionsRequests (state) { export function getPermissionsRequests (state) {
return state.metamask.permissionsRequests || [] return state.metamask.permissionsRequests || []
} }

View File

@ -428,16 +428,12 @@ describe('selectors', function () {
}, },
}, },
}, },
permissionsDescriptions: {
'eth_accounts': "View the addresses of the user's chosen accounts.",
},
}, },
} }
it('should return a list of permissions strings', function () { it('should return a list of permissions strings', function () {
assert.deepEqual(getPermissionsForActiveTab(mockState), [{ assert.deepEqual(getPermissionsForActiveTab(mockState), [{
key: 'eth_accounts', key: 'eth_accounts',
description: "View the addresses of the user's chosen accounts.",
}]) }])
}) })
}) })