import { useSnapshot } from 'valtio'; import { useCallback, useEffect, useState } from 'react'; import { WcController, CoreHelperUtil, EventsController, RouterController, SnackController, LogController } from '@reown/appkit-core-react-native'; import { FlexView, LoadingThumbnail, IconBox, Logo, Text, useCustomDimensions } from '@reown/appkit-ui-react-native'; import { ConstantsUtil, StringUtil } from '@reown/appkit-common-react-native'; import { useInternalAppKit } from '../../AppKitContext'; import styles from './styles'; import { ScrollView } from 'react-native'; export function ConnectingSocialView() { const { padding } = useCustomDimensions(); const { connect } = useInternalAppKit(); const { data } = useSnapshot(RouterController.state); const { wcUri } = useSnapshot(WcController.state); const [error, setError] = useState(false); const onConnect = useCallback(async () => { try { if (wcUri) { const { redirect, href } = CoreHelperUtil.formatUniversalUrl( ConstantsUtil.WEB_WALLET_URL, wcUri, RouterController.state.data?.socialProvider ); const wcLinking = { name: 'Reown Wallet', href }; WcController.setWcLinking(wcLinking); await CoreHelperUtil.openLink(redirect); await WcController.state.wcPromise; WcController.setConnectedWallet(wcLinking); EventsController.sendEvent({ type: 'track', event: 'SOCIAL_LOGIN_SUCCESS', properties: { provider: RouterController.state.data?.socialProvider! } }); } } catch (e) { LogController.sendError(e, 'ConnectingSocialView.tsx', 'onConnect'); EventsController.sendEvent({ type: 'track', event: 'SOCIAL_LOGIN_ERROR', properties: { provider: RouterController.state.data?.socialProvider! } }); SnackController.showError('Something went wrong'); setError(true); } }, [wcUri]); const initializeConnection = useCallback(async () => { const connectPromise = connect(); WcController.setWcPromise(connectPromise); }, [connect]); useEffect(() => { initializeConnection(); // eslint-disable-next-line react-hooks/exhaustive-deps }, []); useEffect(() => { if (wcUri) { onConnect(); } }, [wcUri, onConnect]); return ( {error ? ( ) : null} Continue with {StringUtil.capitalize(data?.socialProvider ?? 'Login')} Continue in your browser ); }