/* eslint-disable valtio/state-snapshot-rule */ import { ScrollView, useWindowDimensions, View } from 'react-native'; import { CardSelect, CardSelectWidth, FlexView, Link, Separator, Spacing, Text, useCustomDimensions } from '@reown/appkit-ui-react-native'; import { ApiController, RouterController, EventsController, ConnectionsController, OptionsController, AssetController, AssetUtil } from '@reown/appkit-core-react-native'; import type { AppKitNetwork } from '@reown/appkit-common-react-native'; import styles from './styles'; import { useInternalAppKit } from '../../AppKitContext'; import { useSnapshot } from 'valtio'; export function NetworksView() { const { height, width } = useWindowDimensions(); const windowSize = Math.min(height, width); const { networkImages } = useSnapshot(AssetController.state); const { activeNetwork, isConnected } = useSnapshot(ConnectionsController.state); const imageHeaders = ApiController._getApiHeaders(); const { padding } = useCustomDimensions(); const numColumns = 4; const usableWidth = windowSize - Spacing.xs * 2 - Spacing['4xs']; const itemWidth = Math.abs(Math.trunc(usableWidth / numColumns)); const itemGap = Math.abs( Math.trunc((usableWidth - numColumns * CardSelectWidth) / numColumns) / 2 ); const { switchNetwork, back } = useInternalAppKit(); const networkList = ConnectionsController.getAvailableNetworks(); const connectedNetworks = ConnectionsController.getConnectedNetworks(); const onHelpPress = () => { RouterController.push('WhatIsANetwork'); EventsController.sendEvent({ type: 'track', event: 'CLICK_NETWORK_HELP' }); }; const networksTemplate = () => { const onNetworkPress = async (network: AppKitNetwork) => { if ( !isConnected || connectedNetworks.some( connectedNetwork => connectedNetwork.caipNetworkId === network.caipNetworkId ) ) { await switchNetwork(network); back(); } else { RouterController.push('SwitchNetwork', { network }); } }; return networkList.map(network => { const isSelected = isConnected ? activeNetwork?.caipNetworkId === network.caipNetworkId : OptionsController.state.defaultNetwork?.caipNetworkId === network.caipNetworkId; const networkImage = AssetUtil.getNetworkImage(network, networkImages); return ( onNetworkPress(network)} /> ); }); }; return ( <> {networksTemplate()} Your connected wallet may not support some of the networks available for this dApp What is a network? ); }