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,