From 24f982873b8dd5579851a6f2987ef1981c863466 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Tue, 24 Sep 2024 20:33:32 +0200 Subject: [PATCH] fix: Don't show third party notice for preinstalled Snaps (#27365) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This cherry-picks commit 5cc14af into release 12.3.0. [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/27319?quickstart=1) ## **Pre-merge author checklist** - [x] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/develop/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/develop/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --- .../snaps/snaps-connect/snaps-connect.js | 28 ++++++++++++------- ui/selectors/selectors.js | 12 ++++++++ 2 files changed, 30 insertions(+), 10 deletions(-) diff --git a/ui/pages/permissions-connect/snaps/snaps-connect/snaps-connect.js b/ui/pages/permissions-connect/snaps/snaps-connect/snaps-connect.js index 0ef95da18f89..fe45b7d02ef0 100644 --- a/ui/pages/permissions-connect/snaps/snaps-connect/snaps-connect.js +++ b/ui/pages/permissions-connect/snaps/snaps-connect/snaps-connect.js @@ -20,8 +20,12 @@ import SnapConnectCell from '../../../../components/app/snaps/snap-connect-cell/ import { getDedupedSnaps } from '../../../../helpers/utils/util'; import PulseLoader from '../../../../components/ui/pulse-loader/pulse-loader'; import SnapPrivacyWarning from '../../../../components/app/snaps/snap-privacy-warning/snap-privacy-warning'; -import { getPermissions, getSnapMetadata } from '../../../../selectors'; import SnapAvatar from '../../../../components/app/snaps/snap-avatar/snap-avatar'; +import { + getPermissions, + getPreinstalledSnaps, + getSnapMetadata, +} from '../../../../selectors'; import { useOriginMetadata } from '../../../../hooks/useOriginMetadata'; export default function SnapsConnect({ @@ -35,12 +39,23 @@ export default function SnapsConnect({ const t = useI18nContext(); const { origin } = targetSubjectMetadata; const [isLoading, setIsLoading] = useState(false); - const [isShowingSnapsPrivacyWarning, setIsShowingSnapsPrivacyWarning] = - useState(!snapsInstallPrivacyWarningShown); + const currentPermissions = useSelector((state) => getPermissions(state, request?.metadata?.origin), ); + const preinstalledSnaps = useSelector(getPreinstalledSnaps); + + const snaps = getDedupedSnaps(request, currentPermissions); + const snapId = snaps[0]; + const { name: snapName } = useSelector((state) => + getSnapMetadata(state, snapId), + ); + + const isPreinstalled = Object.keys(preinstalledSnaps).includes(snapId); + const [isShowingSnapsPrivacyWarning, setIsShowingSnapsPrivacyWarning] = + useState(!isPreinstalled && !snapsInstallPrivacyWarningShown); + const onCancel = useCallback(() => { rejectConnection(request.metadata.id); }, [request, rejectConnection]); @@ -54,16 +69,9 @@ export default function SnapsConnect({ } }, [request, approveConnection]); - const snaps = getDedupedSnaps(request, currentPermissions); - const SnapsConnectContent = () => { const { hostname: trimmedOrigin } = useOriginMetadata(origin) || {}; - const snapId = snaps[0]; - const { name: snapName } = useSelector((state) => - getSnapMetadata(state, snapId), - ); - if (isLoading) { return ( { }, {}); }); +export const getPreinstalledSnaps = createDeepEqualSelector( + getSnaps, + (snaps) => { + return Object.values(snaps).reduce((acc, snap) => { + if (snap.preinstalled) { + acc[snap.id] = snap; + } + return acc; + }, {}); + }, +); + export const getInsightSnaps = createDeepEqualSelector( getEnabledSnaps, getPermissionSubjects,