import { useState } from 'react'; import { ScrollView } from 'react-native'; import { useSnapshot } from 'valtio'; import { Avatar, Button, DoubleImageLoader, FlexView, Text, useCustomDimensions } from '@reown/appkit-ui-react-native'; import { ConnectionsController, LogController, OptionsController, RouterController, SnackController } from '@reown/appkit-core-react-native'; import { useInternalAppKit } from '../../AppKitContext'; import { SIWXUtil } from '../../utils/SIWXUtil'; import styles from './styles'; export function SIWXSignMessageView() { const { disconnect } = useInternalAppKit(); const { padding } = useCustomDimensions(); const { metadata } = useSnapshot(OptionsController.state); const { activeAddress, identity, walletInfo } = useSnapshot(ConnectionsController.state); const [isSigning, setIsSigning] = useState(false); const [isDisconnecting, setIsDisconnecting] = useState(false); const dappName = metadata?.name || 'Dapp'; const dappIcon = metadata?.icons[0] || ''; const walletIcon = walletInfo?.icon; const onSign = async () => { setIsSigning(true); try { await SIWXUtil.requestSignMessage(); } catch (error) { LogController.sendError(error, 'SIWXSignMessageView.tsx', 'onSign'); SnackController.showError('Signature declined'); } finally { setIsSigning(false); } }; const onCancel = async () => { if (ConnectionsController.state.activeAddress) { setIsDisconnecting(true); await SIWXUtil.cancelSignMessage(disconnect); setIsDisconnecting(false); } else { RouterController.push('Connect'); } }; return ( ( )} rightItemStyle={!walletIcon && styles.walletAvatar} /> {dappName} needs to connect to your wallet Sign this message to prove you own this wallet and proceed. Cancelling will disconnect you ); }