import { useSnapshot } from 'valtio'; import { useCallback, useEffect, useState } from 'react'; import { ApiController, AssetController, AssetUtil, LogController, RouterController } from '@reown/appkit-core-react-native'; import { Button, FlexView, IconBox, LoadingHexagon, NetworkImage, Text, useCustomDimensions } from '@reown/appkit-ui-react-native'; import { useInternalAppKit } from '../../AppKitContext'; import styles from './styles'; import { ScrollView } from 'react-native'; export function NetworkSwitchView() { const { switchNetwork, back } = useInternalAppKit(); const { padding } = useCustomDimensions(); const { data } = useSnapshot(RouterController.state); const { networkImages } = useSnapshot(AssetController.state); const [showRetry, setShowRetry] = useState(false); const [isError, setIsError] = useState(false); const networkImage = AssetUtil.getNetworkImage(data?.network, networkImages); const onSwitchNetwork = useCallback(async () => { try { if (!RouterController.state.data?.network) return; setIsError(false); await switchNetwork(RouterController.state.data.network); back(); } catch (error) { LogController.sendError(error, 'NetworkSwitchView.tsx', 'onSwitchNetwork'); setIsError(true); setShowRetry(true); } }, [switchNetwork, back]); useEffect(() => { onSwitchNetwork(); // eslint-disable-next-line react-hooks/exhaustive-deps }, []); return ( {isError ? ( ) : null} {isError ? ( <> Switch declined Switch can be declined if chain is not supported by a wallet or previous request is still active ) : ( <> Approve in your wallet Accept the switch request in your wallet )} {showRetry ? ( ) : null} ); }