import React, { useEffect, useState } from 'react'; import { AppState, TouchableOpacity, View } from 'react-native'; import { Button, Text, TextInput } from 'react-native-paper'; import { Camera, useCameraDevice, useCameraPermission, useCodeScanner, } from 'react-native-vision-camera'; import { Linking } from 'react-native'; import { useNavigation } from '@react-navigation/native'; import { NativeStackNavigationProp } from '@react-navigation/native-stack'; import { web3WalletPair } from '../utils/wallet-connect/WalletConnectUtils'; import styles from '../styles/stylesheet'; import { StackParamsList } from '../types'; const AddSession = () => { const navigation = useNavigation>(); const { hasPermission, requestPermission } = useCameraPermission(); const device = useCameraDevice('back'); const [currentWCURI, setCurrentWCURI] = useState(''); const [isActive, setIsActive] = useState(AppState.currentState === 'active'); const [isScanning, setScanning] = useState(true); const codeScanner = useCodeScanner({ codeTypes: ['qr'], onCodeScanned: codes => { if (isScanning) { codes.forEach(code => { if (code.value) { setCurrentWCURI(code.value); setScanning(false); } }); } }, }); const linkToSettings = async () => { await Linking.openSettings(); }; const pair = async () => { const pairing = await web3WalletPair({ uri: currentWCURI }); navigation.navigate('WalletConnect'); return pairing; }; useEffect(() => { const handleAppStateChange = (newState: string) => { setIsActive(newState === 'active'); }; AppState.addEventListener('change', handleAppStateChange); if (!hasPermission) { requestPermission(); } }, [hasPermission, requestPermission]); return ( {!hasPermission || !device ? ( <> {!hasPermission ? 'No Camera Permission granted' : 'No Camera Selected'} Go to settings ) : ( <> {isActive ? ( ) : ( No Camera Selected! )} Enter WalletConnect URI )} ); }; export default AddSession;