diff --git a/.yarnrc.yml b/.yarnrc.yml index 5d4aa7cd4e73..252333917781 100644 --- a/.yarnrc.yml +++ b/.yarnrc.yml @@ -43,16 +43,6 @@ npmAuditIgnoreAdvisories: # not appear to be used. - 1092461 - # Issue: path-to-regexp outputs backtracking regular expressions - # URL: https://github.com/advisories/GHSA-9wv6-86v2-598j - # path-to-regexp is used in react-router v5.1.2, which we use. However, the - # vulnerability in path-to-regexp could only be exploited within react-router - # if malicious properties were passed to react-router components or methods - # explicitly from our code. As such, this vulneratibility cannot be exploited - # by an external / malicious actor. Meanwhile, once we update to v6+, - # path-to-regexp will no longer be used. - - 1099518 - # Temp fix for https://github.com/MetaMask/metamask-extension/pull/16920 for the sake of 11.7.1 hotfix # This will be removed in this ticket https://github.com/MetaMask/metamask-extension/issues/22299 - 'ts-custom-error (deprecation)' diff --git a/lavamoat/browserify/beta/policy.json b/lavamoat/browserify/beta/policy.json index eb3caba43c21..605c88c89ea1 100644 --- a/lavamoat/browserify/beta/policy.json +++ b/lavamoat/browserify/beta/policy.json @@ -5552,7 +5552,7 @@ "react-router-dom>react-router>mini-create-react-context": true, "react-router-dom>tiny-invariant": true, "react-router-dom>tiny-warning": true, - "sinon>nise>path-to-regexp": true + "serve-handler>path-to-regexp": true } }, "react-router-dom>react-router>history": { @@ -5702,9 +5702,9 @@ "process": true } }, - "sinon>nise>path-to-regexp": { + "serve-handler>path-to-regexp": { "packages": { - "sinon>nise>path-to-regexp>isarray": true + "serve-handler>path-to-regexp>isarray": true } }, "stream-browserify": { diff --git a/lavamoat/browserify/flask/policy.json b/lavamoat/browserify/flask/policy.json index eb3caba43c21..605c88c89ea1 100644 --- a/lavamoat/browserify/flask/policy.json +++ b/lavamoat/browserify/flask/policy.json @@ -5552,7 +5552,7 @@ "react-router-dom>react-router>mini-create-react-context": true, "react-router-dom>tiny-invariant": true, "react-router-dom>tiny-warning": true, - "sinon>nise>path-to-regexp": true + "serve-handler>path-to-regexp": true } }, "react-router-dom>react-router>history": { @@ -5702,9 +5702,9 @@ "process": true } }, - "sinon>nise>path-to-regexp": { + "serve-handler>path-to-regexp": { "packages": { - "sinon>nise>path-to-regexp>isarray": true + "serve-handler>path-to-regexp>isarray": true } }, "stream-browserify": { diff --git a/lavamoat/browserify/main/policy.json b/lavamoat/browserify/main/policy.json index eb3caba43c21..605c88c89ea1 100644 --- a/lavamoat/browserify/main/policy.json +++ b/lavamoat/browserify/main/policy.json @@ -5552,7 +5552,7 @@ "react-router-dom>react-router>mini-create-react-context": true, "react-router-dom>tiny-invariant": true, "react-router-dom>tiny-warning": true, - "sinon>nise>path-to-regexp": true + "serve-handler>path-to-regexp": true } }, "react-router-dom>react-router>history": { @@ -5702,9 +5702,9 @@ "process": true } }, - "sinon>nise>path-to-regexp": { + "serve-handler>path-to-regexp": { "packages": { - "sinon>nise>path-to-regexp>isarray": true + "serve-handler>path-to-regexp>isarray": true } }, "stream-browserify": { diff --git a/lavamoat/browserify/mmi/policy.json b/lavamoat/browserify/mmi/policy.json index 465b5dcf621b..96ba8b467983 100644 --- a/lavamoat/browserify/mmi/policy.json +++ b/lavamoat/browserify/mmi/policy.json @@ -5620,7 +5620,7 @@ "react-router-dom>react-router>mini-create-react-context": true, "react-router-dom>tiny-invariant": true, "react-router-dom>tiny-warning": true, - "sinon>nise>path-to-regexp": true + "serve-handler>path-to-regexp": true } }, "react-router-dom>react-router>history": { @@ -5770,9 +5770,9 @@ "process": true } }, - "sinon>nise>path-to-regexp": { + "serve-handler>path-to-regexp": { "packages": { - "sinon>nise>path-to-regexp>isarray": true + "serve-handler>path-to-regexp>isarray": true } }, "stream-browserify": { diff --git a/package.json b/package.json index a77f7f822598..d47a42556704 100644 --- a/package.json +++ b/package.json @@ -266,6 +266,7 @@ "@metamask/keyring-controller@npm:^17.1.0": "patch:@metamask/keyring-controller@npm%3A17.1.1#~/.yarn/patches/@metamask-keyring-controller-npm-17.1.1-098cb41930.patch", "@trezor/connect-web@npm:^9.1.11": "patch:@trezor/connect-web@npm%3A9.3.0#~/.yarn/patches/@trezor-connect-web-npm-9.3.0-040ab10d9a.patch", "@metamask/transaction-controller@npm:^34.0.0": "patch:@metamask/transaction-controller@npm%3A34.0.0#~/.yarn/patches/@metamask-transaction-controller-npm-34.0.0-8bdfa87aaf.patch" + "path-to-regexp": "1.9.0" }, "dependencies": { "@babel/runtime": "patch:@babel/runtime@npm%3A7.24.0#~/.yarn/patches/@babel-runtime-npm-7.24.0-7eb1dd11a2.patch", diff --git a/ui/components/app/modals/turn-on-metamask-notifications/turn-on-metamask-notifications.tsx b/ui/components/app/modals/turn-on-metamask-notifications/turn-on-metamask-notifications.tsx index e63e0a019b2f..de3da35fa841 100644 --- a/ui/components/app/modals/turn-on-metamask-notifications/turn-on-metamask-notifications.tsx +++ b/ui/components/app/modals/turn-on-metamask-notifications/turn-on-metamask-notifications.tsx @@ -51,14 +51,14 @@ export default function TurnOnMetamaskNotifications() { ); const isProfileSyncingEnabled = useSelector(selectIsProfileSyncingEnabled); - const [buttonState, setButtonState] = useState( + const [isLoading, setIsLoading] = useState( isUpdatingMetamaskNotifications, ); const { createNotifications, error } = useCreateNotifications(); const handleTurnOnNotifications = async () => { - setButtonState(true); + setIsLoading(true); await createNotifications(); trackEvent({ category: MetaMetricsEventCategory.NotificationsActivationFlow, @@ -72,13 +72,18 @@ export default function TurnOnMetamaskNotifications() { const handleHideModal = () => { hideModal(); - trackEvent({ - category: MetaMetricsEventCategory.NotificationsActivationFlow, - event: MetaMetricsEventName.NotificationsActivated, - properties: { - is_profile_syncing_enabled: isProfileSyncingEnabled, - action_type: 'dismissed', - }, + setIsLoading((prevLoadingState) => { + if (!prevLoadingState) { + trackEvent({ + category: MetaMetricsEventCategory.NotificationsActivationFlow, + event: MetaMetricsEventName.NotificationsActivated, + properties: { + is_profile_syncing_enabled: isProfileSyncingEnabled, + action_type: 'dismissed', + }, + }); + } + return prevLoadingState; }); }; @@ -149,8 +154,8 @@ export default function TurnOnMetamaskNotifications() { }} submitButtonProps={{ children: t('turnOnMetamaskNotificationsButton'), - loading: buttonState, - disabled: buttonState, + loading: isLoading, + disabled: isLoading, 'data-testid': 'turn-on-notifications-button', }} /> diff --git a/ui/components/app/name/__snapshots__/name.test.tsx.snap b/ui/components/app/name/__snapshots__/name.test.tsx.snap index c3dd86968b31..ee4899a0c866 100644 --- a/ui/components/app/name/__snapshots__/name.test.tsx.snap +++ b/ui/components/app/name/__snapshots__/name.test.tsx.snap @@ -79,3 +79,21 @@ exports[`Name renders address with saved name 1`] = ` `; + +exports[`Name renders when no address value is passed 1`] = ` +
+
+
+ +

+

+
+
+`; diff --git a/ui/components/app/name/name-details/__snapshots__/name-details.test.tsx.snap b/ui/components/app/name/name-details/__snapshots__/name-details.test.tsx.snap index 6ba786d17e2e..4cc537529b14 100644 --- a/ui/components/app/name/name-details/__snapshots__/name-details.test.tsx.snap +++ b/ui/components/app/name/name-details/__snapshots__/name-details.test.tsx.snap @@ -259,6 +259,188 @@ exports[`NameDetails renders proposed names 1`] = ` `; +exports[`NameDetails renders when no address value is passed 1`] = ` + +
+
+
+
+
+