Skip to content

Commit 944f232

Browse files
committed
refactor: update network switching metrics to include chain ID and custom network status
1 parent 1e1a0c1 commit 944f232

File tree

3 files changed

+84
-2
lines changed

3 files changed

+84
-2
lines changed

ui/components/multichain/network-list-menu/network-list-menu.tsx

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,12 @@ import {
5454
FEATURED_RPCS,
5555
TEST_CHAINS,
5656
CHAIN_ID_PORTFOLIO_LANDING_PAGE_URL_MAP,
57+
BUILT_IN_NETWORKS,
5758
} from '../../../../shared/constants/network';
58-
import { MULTICHAIN_NETWORK_TO_ACCOUNT_TYPE_NAME } from '../../../../shared/constants/multichain/networks';
59+
import {
60+
MULTICHAIN_NETWORK_TO_ACCOUNT_TYPE_NAME,
61+
MultichainNetworks,
62+
} from '../../../../shared/constants/multichain/networks';
5963
import {
6064
getShowTestNetworks,
6165
getOriginOfCurrentTab,
@@ -423,6 +427,28 @@ export const NetworkListMenu = ({ onClose }: NetworkListMenuProps) => {
423427
? convertCaipToHexChainId(currentChainId)
424428
: currentChainId;
425429

430+
// Check if the destination network is custom (not built-in, featured, or multichain)
431+
const hexChainId = chain.isEvm
432+
? convertCaipToHexChainId(chain.chainId)
433+
: chain.chainId;
434+
435+
const isBuiltInNetwork = Object.values(BUILT_IN_NETWORKS).some(
436+
(builtInNetwork) => builtInNetwork.chainId === hexChainId,
437+
);
438+
const isFeaturedRpc = FEATURED_RPCS.some(
439+
(featuredRpc) => featuredRpc.chainId === hexChainId,
440+
);
441+
const isMultichainProviderConfig = Object.values(MultichainNetworks).some(
442+
(multichainNetwork) =>
443+
multichainNetwork === chain.chainId ||
444+
(chain.isEvm
445+
? convertCaipToHexChainId(chain.chainId)
446+
: chain.chainId) === multichainNetwork,
447+
);
448+
449+
const isCustomNetwork =
450+
!isBuiltInNetwork && !isFeaturedRpc && !isMultichainProviderConfig;
451+
426452
trackEvent({
427453
event: MetaMetricsEventName.NavNetworkSwitched,
428454
category: MetaMetricsEventCategory.Network,
@@ -437,6 +463,9 @@ export const NetworkListMenu = ({ onClose }: NetworkListMenuProps) => {
437463
// TODO: Fix in https://github.com/MetaMask/metamask-extension/issues/31860
438464
// eslint-disable-next-line @typescript-eslint/naming-convention
439465
to_network: chainIdToTrack,
466+
// TODO: Fix in https://github.com/MetaMask/metamask-extension/issues/31860
467+
// eslint-disable-next-line @typescript-eslint/naming-convention
468+
custom_network: isCustomNetwork,
440469
},
441470
});
442471
};

ui/components/multichain/network-manager/hooks/useNetworkChangeHandlers.ts

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,11 @@ import {
2323
getSelectedMultichainNetworkChainId,
2424
} from '../../../../selectors';
2525
import { MetaMetricsContext } from '../../../../contexts/metametrics';
26+
import {
27+
BUILT_IN_NETWORKS,
28+
FEATURED_RPCS,
29+
} from '../../../../../shared/constants/network';
30+
import { MultichainNetworks } from '../../../../../shared/constants/multichain/networks';
2631

2732
// TODO: Fix in https://github.com/MetaMask/metamask-extension/issues/31860
2833
// eslint-disable-next-line @typescript-eslint/naming-convention
@@ -143,6 +148,28 @@ export const useNetworkChangeHandlers = () => {
143148
? convertCaipToHexChainId(currentChainId)
144149
: currentChainId;
145150

151+
// Check if the destination network is custom (not built-in, featured, or multichain)
152+
const hexChainId = chain.isEvm
153+
? convertCaipToHexChainId(chain.chainId)
154+
: chain.chainId;
155+
156+
const isBuiltInNetwork = Object.values(BUILT_IN_NETWORKS).some(
157+
(builtInNetwork) => builtInNetwork.chainId === hexChainId,
158+
);
159+
const isFeaturedRpc = FEATURED_RPCS.some(
160+
(featuredRpc) => featuredRpc.chainId === hexChainId,
161+
);
162+
const isMultichainProviderConfig = Object.values(MultichainNetworks).some(
163+
(multichainNetwork) =>
164+
multichainNetwork === chain.chainId ||
165+
(chain.isEvm
166+
? convertCaipToHexChainId(chain.chainId)
167+
: chain.chainId) === multichainNetwork,
168+
);
169+
170+
const isCustomNetwork =
171+
!isBuiltInNetwork && !isFeaturedRpc && !isMultichainProviderConfig;
172+
146173
trackEvent({
147174
event: MetaMetricsEventName.NavNetworkSwitched,
148175
category: MetaMetricsEventCategory.Network,
@@ -157,6 +184,9 @@ export const useNetworkChangeHandlers = () => {
157184
// TODO: Fix in https://github.com/MetaMask/metamask-extension/issues/31860
158185
// eslint-disable-next-line @typescript-eslint/naming-convention
159186
to_network: chainIdToTrack,
187+
// TODO: Fix in https://github.com/MetaMask/metamask-extension/issues/31860
188+
// eslint-disable-next-line @typescript-eslint/naming-convention
189+
custom_network: isCustomNetwork,
160190
},
161191
});
162192
},

ui/pages/confirmations/confirmation/confirmation.js

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,12 @@ import {
1818
NETWORKS_BYPASSING_VALIDATION,
1919
} from '@metamask/controller-utils';
2020
import { DIALOG_APPROVAL_TYPES } from '@metamask/snaps-rpc-methods';
21-
import { CHAIN_SPEC_URL } from '../../../../shared/constants/network';
21+
import {
22+
CHAIN_SPEC_URL,
23+
BUILT_IN_NETWORKS,
24+
FEATURED_RPCS,
25+
} from '../../../../shared/constants/network';
26+
import { MultichainNetworks } from '../../../../shared/constants/multichain/networks';
2227
import fetchWithCache from '../../../../shared/lib/fetch-with-cache';
2328
import {
2429
MetaMetricsEventCategory,
@@ -476,6 +481,23 @@ export default function ConfirmationPage({
476481
pendingConfirmation?.requestData?.fromNetworkConfiguration?.chainId &&
477482
pendingConfirmation?.requestData?.toNetworkConfiguration?.chainId
478483
) {
484+
// Check if the destination network is custom (not built-in, featured, or multichain)
485+
const toChainId =
486+
pendingConfirmation.requestData.toNetworkConfiguration.chainId;
487+
488+
const isBuiltInNetwork = Object.values(BUILT_IN_NETWORKS).some(
489+
(builtInNetwork) => builtInNetwork.chainId === toChainId,
490+
);
491+
const isFeaturedRpc = FEATURED_RPCS.some(
492+
(featuredRpc) => featuredRpc.chainId === toChainId,
493+
);
494+
const isMultichainProviderConfig = Object.values(MultichainNetworks).some(
495+
(multichainNetwork) => multichainNetwork === toChainId,
496+
);
497+
498+
const isCustomNetwork =
499+
!isBuiltInNetwork && !isFeaturedRpc && !isMultichainProviderConfig;
500+
479501
trackEvent({
480502
category: MetaMetricsEventCategory.Network,
481503
event: MetaMetricsEventName.NavNetworkSwitched,
@@ -485,6 +507,7 @@ export default function ConfirmationPage({
485507
pendingConfirmation.requestData.fromNetworkConfiguration.chainId,
486508
to_network:
487509
pendingConfirmation.requestData.toNetworkConfiguration.chainId,
510+
custom_network: isCustomNetwork,
488511
referrer: {
489512
url: window.location.origin,
490513
},

0 commit comments

Comments
 (0)