import React, { useEffect, useState } from 'react'; import { AppState, View } from 'react-native'; import { Button, Text, TextInput } from 'react-native-paper'; import { Camera, useCameraDevice, useCameraPermission, useCodeScanner, } from 'react-native-vision-camera'; 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 pair = async () => { const pairing = await web3WalletPair({ uri: currentWCURI }); navigation.navigate('WalletConnect'); return pairing; }; // const disconnect = async () => { // const activeSessions = await web3wallet.getActiveSessions(); // const topic = Object.values(activeSessions)[0].topic; // if (activeSessions) { // await web3wallet.disconnectSession({ // topic, // reason: getSdkError('USER_DISCONNECTED'), // }); // navigation.navigate('Laconic'); // return; // } // }; useEffect(() => { const handleAppStateChange = (newState: string) => { setIsActive(newState === 'active'); }; AppState.addEventListener('change', handleAppStateChange); if (!hasPermission) { requestPermission(); } }, [hasPermission, isActive, requestPermission]); return ( {!hasPermission || !device ? ( {!hasPermission ? 'No Camera Permission granted' : 'No Camera Selected'} ) : ( <> {isActive ? ( ) : ( No Camera Selected! )} Enter WalletConnect URI )} ); }; export default AddSession;