import { useSnapshot } from 'valtio'; import { useEffect } from 'react'; import { ScrollView } from 'react-native'; import { NumberUtil } from '@reown/appkit-common-react-native'; import { RouterController, SwapController } from '@reown/appkit-core-react-native'; import { Button, FlexView, Icon, Text, TokenButton, UiUtil, useCustomDimensions } from '@reown/appkit-ui-react-native'; import { SwapDetails } from '../../partials/w3m-swap-details'; import styles from './styles'; export function SwapPreviewView() { const { padding } = useCustomDimensions(); const { sourceToken, sourceTokenAmount, sourceTokenPriceInUSD, toToken, toTokenAmount, toTokenPriceInUSD, loadingQuote, loadingBuildTransaction, loadingTransaction, loadingApprovalTransaction } = useSnapshot(SwapController.state); const sourceTokenMarketValue = NumberUtil.parseLocalStringToNumber(sourceTokenAmount) * sourceTokenPriceInUSD; const toTokenMarketValue = NumberUtil.parseLocalStringToNumber(toTokenAmount) * toTokenPriceInUSD; const loading = loadingQuote || loadingBuildTransaction || loadingTransaction || loadingApprovalTransaction; const onCancel = () => { SwapController.clearTransactionLoaders(); RouterController.goBack(); }; const onSwap = () => { if (SwapController.state.approvalTransaction) { SwapController.sendTransactionForApproval(SwapController.state.approvalTransaction); } else { SwapController.sendTransactionForSwap(SwapController.state.swapTransaction); } }; useEffect(() => { function refreshTransaction() { if (!SwapController.state.loadingApprovalTransaction) { SwapController.getTransaction(); } } SwapController.getTransaction(); const interval = setInterval(refreshTransaction, 10000); return () => { clearInterval(interval); }; }, []); return ( Send ${UiUtil.formatNumberToLocalString(sourceTokenMarketValue, 6)} Receive ${UiUtil.formatNumberToLocalString(toTokenMarketValue, 6)} Review transaction carefully ); }