mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-23 09:52:26 +01:00
UX: Network Menu: Disable testnet toggle when on testnet (#19951)
This commit is contained in:
parent
91c84996b7
commit
45b7b0ca76
@ -17,7 +17,6 @@ import {
|
|||||||
getCurrentChainId,
|
getCurrentChainId,
|
||||||
getNonTestNetworks,
|
getNonTestNetworks,
|
||||||
getTestNetworks,
|
getTestNetworks,
|
||||||
getCurrentNetwork,
|
|
||||||
} from '../../../selectors';
|
} from '../../../selectors';
|
||||||
import ToggleButton from '../../ui/toggle-button';
|
import ToggleButton from '../../ui/toggle-button';
|
||||||
import {
|
import {
|
||||||
@ -58,16 +57,15 @@ export const NetworkListMenu = ({ onClose }) => {
|
|||||||
|
|
||||||
const nonTestNetworks = useSelector(getNonTestNetworks);
|
const nonTestNetworks = useSelector(getNonTestNetworks);
|
||||||
const testNetworks = useSelector(getTestNetworks);
|
const testNetworks = useSelector(getTestNetworks);
|
||||||
|
|
||||||
const showTestNetworks = useSelector(getShowTestNetworks);
|
const showTestNetworks = useSelector(getShowTestNetworks);
|
||||||
const currentChainId = useSelector(getCurrentChainId);
|
const currentChainId = useSelector(getCurrentChainId);
|
||||||
|
|
||||||
const currentNetwork = useSelector(getCurrentNetwork);
|
|
||||||
|
|
||||||
const dispatch = useDispatch();
|
const dispatch = useDispatch();
|
||||||
const history = useHistory();
|
const history = useHistory();
|
||||||
const trackEvent = useContext(MetaMetricsContext);
|
const trackEvent = useContext(MetaMetricsContext);
|
||||||
|
|
||||||
|
const currentlyOnTestNetwork = TEST_CHAINS.includes(currentChainId);
|
||||||
|
|
||||||
const environmentType = getEnvironmentType();
|
const environmentType = getEnvironmentType();
|
||||||
const isFullScreen = environmentType === ENVIRONMENT_TYPE_FULLSCREEN;
|
const isFullScreen = environmentType === ENVIRONMENT_TYPE_FULLSCREEN;
|
||||||
|
|
||||||
@ -80,8 +78,8 @@ export const NetworkListMenu = ({ onClose }) => {
|
|||||||
if (!lineaMainnetReleased && network.providerType === 'linea-mainnet') {
|
if (!lineaMainnetReleased && network.providerType === 'linea-mainnet') {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
const isCurrentNetwork = currentNetwork.id === network.id;
|
|
||||||
|
|
||||||
|
const isCurrentNetwork = currentChainId === network.chainId;
|
||||||
const canDeleteNetwork =
|
const canDeleteNetwork =
|
||||||
!isCurrentNetwork && !UNREMOVABLE_CHAIN_IDS.includes(network.chainId);
|
!isCurrentNetwork && !UNREMOVABLE_CHAIN_IDS.includes(network.chainId);
|
||||||
|
|
||||||
@ -155,6 +153,7 @@ export const NetworkListMenu = ({ onClose }) => {
|
|||||||
<Text>{t('showTestnetNetworks')}</Text>
|
<Text>{t('showTestnetNetworks')}</Text>
|
||||||
<ToggleButton
|
<ToggleButton
|
||||||
value={showTestNetworks}
|
value={showTestNetworks}
|
||||||
|
disabled={currentlyOnTestNetwork}
|
||||||
onToggle={(value) => {
|
onToggle={(value) => {
|
||||||
const shouldShowTestNetworks = !value;
|
const shouldShowTestNetworks = !value;
|
||||||
dispatch(setShowTestNetworks(shouldShowTestNetworks));
|
dispatch(setShowTestNetworks(shouldShowTestNetworks));
|
||||||
@ -167,7 +166,7 @@ export const NetworkListMenu = ({ onClose }) => {
|
|||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
</Box>
|
</Box>
|
||||||
{showTestNetworks ? (
|
{showTestNetworks || currentlyOnTestNetwork ? (
|
||||||
<Box className="multichain-network-list-menu">
|
<Box className="multichain-network-list-menu">
|
||||||
{generateMenuItems(testNetworks)}
|
{generateMenuItems(testNetworks)}
|
||||||
</Box>
|
</Box>
|
||||||
|
@ -4,6 +4,7 @@ import { fireEvent, renderWithProvider } from '../../../../test/jest';
|
|||||||
import configureStore from '../../../store/store';
|
import configureStore from '../../../store/store';
|
||||||
import mockState from '../../../../test/data/mock-state.json';
|
import mockState from '../../../../test/data/mock-state.json';
|
||||||
import {
|
import {
|
||||||
|
CHAIN_IDS,
|
||||||
MAINNET_DISPLAY_NAME,
|
MAINNET_DISPLAY_NAME,
|
||||||
SEPOLIA_DISPLAY_NAME,
|
SEPOLIA_DISPLAY_NAME,
|
||||||
} from '../../../../shared/constants/network';
|
} from '../../../../shared/constants/network';
|
||||||
@ -18,10 +19,14 @@ jest.mock('../../../store/actions.ts', () => ({
|
|||||||
toggleNetworkMenu: () => mockToggleNetworkMenu,
|
toggleNetworkMenu: () => mockToggleNetworkMenu,
|
||||||
}));
|
}));
|
||||||
|
|
||||||
const render = (showTestNetworks = false) => {
|
const render = (showTestNetworks = false, currentChainId = '0x1') => {
|
||||||
const store = configureStore({
|
const store = configureStore({
|
||||||
metamask: {
|
metamask: {
|
||||||
...mockState.metamask,
|
...mockState.metamask,
|
||||||
|
providerConfig: {
|
||||||
|
...mockState.metamask.providerConfig,
|
||||||
|
chainId: currentChainId,
|
||||||
|
},
|
||||||
preferences: {
|
preferences: {
|
||||||
showTestNetworks,
|
showTestNetworks,
|
||||||
},
|
},
|
||||||
@ -55,6 +60,11 @@ describe('NetworkListMenu', () => {
|
|||||||
expect(mockSetShowTestNetworks).toHaveBeenCalled();
|
expect(mockSetShowTestNetworks).toHaveBeenCalled();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('disables toggle when on test network', () => {
|
||||||
|
const { container } = render(false, CHAIN_IDS.GOERLI);
|
||||||
|
expect(container.querySelector('.toggle-button--disabled')).toBeDefined();
|
||||||
|
});
|
||||||
|
|
||||||
it('switches networks when an item is clicked', () => {
|
it('switches networks when an item is clicked', () => {
|
||||||
const { getByText } = render();
|
const { getByText } = render();
|
||||||
fireEvent.click(getByText(MAINNET_DISPLAY_NAME));
|
fireEvent.click(getByText(MAINNET_DISPLAY_NAME));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user