diff --git a/ui/components/app/flask/update-snap-permission-list/update-snap-permission-list.js b/ui/components/app/flask/update-snap-permission-list/update-snap-permission-list.js index 85f3373d4..5ed3a6669 100644 --- a/ui/components/app/flask/update-snap-permission-list/update-snap-permission-list.js +++ b/ui/components/app/flask/update-snap-permission-list/update-snap-permission-list.js @@ -9,24 +9,13 @@ export default function UpdateSnapPermissionList({ approvedPermissions, revokedPermissions, newPermissions, + targetSubjectMetadata, }) { const t = useI18nContext(); return ( - {getWeightedPermissions(t, newPermissions).map((permission, index) => { - return ( - - ); - })} - {getWeightedPermissions(t, approvedPermissions).map( + {getWeightedPermissions(t, newPermissions, targetSubjectMetadata).map( (permission, index) => { return ( { + return ( + + ); + })} + {getWeightedPermissions(t, revokedPermissions, targetSubjectMetadata).map( (permission, index) => { return ( - {getWeightedPermissions(t, permissions).map((permission, index) => { - return ( - - ); - })} + {getWeightedPermissions(t, permissions, targetSubjectMetadata).map( + (permission, index) => { + return ( + + ); + }, + )} ); } PermissionsConnectPermissionList.propTypes = { permissions: PropTypes.object.isRequired, + targetSubjectMetadata: PropTypes.object.isRequired, }; diff --git a/ui/helpers/utils/permission.js b/ui/helpers/utils/permission.js index 234f1c6ba..b931f0656 100644 --- a/ui/helpers/utils/permission.js +++ b/ui/helpers/utils/permission.js @@ -409,6 +409,7 @@ export const getPermissionDescription = ({ t, permissionName, permissionValue, + targetSubjectMetadata, }) => { let value = PERMISSION_DESCRIPTIONS[UNKNOWN_PERMISSION]; @@ -416,7 +417,12 @@ export const getPermissionDescription = ({ value = PERMISSION_DESCRIPTIONS[permissionName]; } - const result = value({ t, permissionName, permissionValue }); + const result = value({ + t, + permissionName, + permissionValue, + targetSubjectMetadata, + }); if (!Array.isArray(result)) { return [{ ...result, permissionName, permissionValue }]; } @@ -434,14 +440,20 @@ export const getPermissionDescription = ({ * * @param {Function} t - The translation function * @param {object} permissions - The permissions object. + * @param {object} targetSubjectMetadata - The subject metadata. * @returns {PermissionLabelObject[]} */ -export function getWeightedPermissions(t, permissions) { +export function getWeightedPermissions(t, permissions, targetSubjectMetadata) { return Object.entries(permissions) .reduce( (target, [permissionName, permissionValue]) => target.concat( - getPermissionDescription({ t, permissionName, permissionValue }), + getPermissionDescription({ + t, + permissionName, + permissionValue, + targetSubjectMetadata, + }), ), [], ) diff --git a/ui/pages/permissions-connect/flask/snap-install/snap-install.js b/ui/pages/permissions-connect/flask/snap-install/snap-install.js index 776cd7323..34a0cbcd3 100644 --- a/ui/pages/permissions-connect/flask/snap-install/snap-install.js +++ b/ui/pages/permissions-connect/flask/snap-install/snap-install.js @@ -123,6 +123,7 @@ export default function SnapInstall({ )} diff --git a/ui/pages/permissions-connect/flask/snap-update/snap-update.js b/ui/pages/permissions-connect/flask/snap-update/snap-update.js index e6d6d7920..f31aabf09 100644 --- a/ui/pages/permissions-connect/flask/snap-update/snap-update.js +++ b/ui/pages/permissions-connect/flask/snap-update/snap-update.js @@ -135,6 +135,7 @@ export default function SnapUpdate({ approvedPermissions={approvedPermissions} revokedPermissions={revokedPermissions} newPermissions={newPermissions} + targetSubjectMetadata={targetSubjectMetadata} /> )} diff --git a/ui/pages/permissions-connect/flask/util.js b/ui/pages/permissions-connect/flask/util.js index 6711b98a5..0ded62e40 100644 --- a/ui/pages/permissions-connect/flask/util.js +++ b/ui/pages/permissions-connect/flask/util.js @@ -1,29 +1,18 @@ -import { isObject } from '@metamask/utils'; -import { PERMISSION_DESCRIPTIONS } from '../../../helpers/utils/permission'; +import { getPermissionDescription } from '../../../helpers/utils/permission'; export function getSnapInstallWarnings(permissions, targetSubjectMetadata, t) { const weightOneWarnings = Object.entries(permissions).reduce( (filteredWarnings, [permissionName, permissionValue]) => { - const permissionDescription = PERMISSION_DESCRIPTIONS[permissionName]({ + const permissionDescription = getPermissionDescription({ t, + permissionName, permissionValue, targetSubjectMetadata, }); - if (Array.isArray(permissionDescription)) { - permissionDescription.forEach((description) => { - if (description.weight === 1) { - const { id, message } = description; - filteredWarnings.push({ id, message }); - } - }); - } else if ( - isObject(permissionDescription) && - permissionDescription.weight === 1 - ) { - const { id, message } = permissionDescription; - filteredWarnings.push({ id, message }); - } - return filteredWarnings; + + return filteredWarnings.concat( + permissionDescription.filter((description) => description.weight === 1), + ); }, [], ); diff --git a/ui/pages/settings/flask/view-snap/view-snap.js b/ui/pages/settings/flask/view-snap/view-snap.js index d8f5b6e93..3261652d9 100644 --- a/ui/pages/settings/flask/view-snap/view-snap.js +++ b/ui/pages/settings/flask/view-snap/view-snap.js @@ -35,6 +35,7 @@ import { getSubjectsWithSnapPermission, getPermissions, getPermissionSubjects, + getTargetSubjectMetadata, } from '../../../../selectors'; import { formatDate } from '../../../../helpers/utils/util'; @@ -65,6 +66,9 @@ function ViewSnap() { (state) => snap && getPermissions(state, snap.id), ); const subjects = useSelector((state) => getPermissionSubjects(state)); + const targetSubjectMetadata = useSelector((state) => + getTargetSubjectMetadata(state, snap?.id), + ); const dispatch = useDispatch(); const onToggle = () => { @@ -180,6 +184,7 @@ function ViewSnap() {