From fb173acde52e81236866693848bb890a22d31f54 Mon Sep 17 00:00:00 2001 From: shreya-mishra Date: Fri, 8 Sep 2023 16:54:36 +0530 Subject: [PATCH] fix camera issue --- android/app/src/main/AndroidManifest.xml | 51 ++++++++++++--------- src/screens/AuthScreen/AuthScreen.tsx | 56 +++++++++++++++++------- src/screens/AuthScreen/Util.ts | 24 ++++++++++ 3 files changed, 95 insertions(+), 36 deletions(-) diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 81f06f71..cd4cce27 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -1,28 +1,39 @@ + package="com.rdsapp"> - - + + - - - - - - + android:icon="@mipmap/ic_launcher" + android:roundIcon="@mipmap/ic_launcher_round" + android:allowBackup="false" + android:theme="@style/AppTheme"> + + + + + + + + + + + + + + + diff --git a/src/screens/AuthScreen/AuthScreen.tsx b/src/screens/AuthScreen/AuthScreen.tsx index a36640b2..1ec79261 100644 --- a/src/screens/AuthScreen/AuthScreen.tsx +++ b/src/screens/AuthScreen/AuthScreen.tsx @@ -14,7 +14,7 @@ import { AuthViewStyle } from './styles'; import { AuthScreenButton } from './Button'; import { Toast } from 'react-native-toast-message/lib/src/Toast'; import { AuthContext } from '../../context/AuthContext'; -import { getUserData } from './Util'; +import { getUserData, requestCameraPermission } from './Util'; import { storeData } from '../../utils/dataStore'; import { SafeAreaView } from 'react-native-safe-area-context'; import { ActivityIndicator } from 'react-native'; @@ -33,13 +33,15 @@ const AuthScreen = () => { const [cameraActive, setCameraActive] = useState(false); const [scannedUserId, setScannedUserID] = useState(''); const [modalVisible, setModalVisible] = useState(false); + const [addressbarURL, setAdressbarURL] = useState(''); + const [key, setKey] = useState(1); const activateCamera = async () => { try { - // await Camera.requestCameraPermission(); // Request camera permission - setCameraActive(true); // Set cameraActive state to true - } catch (error) { - console.error('Error requesting camera permission:', error); + await requestCameraPermission(); + setCameraActive((prev) => !prev); // Set cameraActive state to true + } catch (error: any) { + Alert.alert('Error requesting camera permission:', error); } }; @@ -197,17 +199,39 @@ const AuthScreen = () => { { - if (url === urls.REDIRECT_URL) { - setAdressbarURL(url); - updateUserData(url); - } else if (url.indexOf('?') > 0) { - let uri = url.substring(0, url.indexOf('?')); - setAdressbarURL(uri); - updateUserData(uri); - } else { - setAdressbarURL(url); - updateUserData(url); - } + (async function () { + if (url === urls.REDIRECT_URL) { + setAdressbarURL(url); + try { + const res = await getUserData(url); + await storeData('userData', JSON.stringify(res)); + + setLoggedInUserData({ + id: res?.id, + name: res?.name, + profileUrl: res?.profileUrl, + status: res?.status, + }); + } catch (err) { + setLoggedInUserData(null); + } + } else if (url.indexOf('?') > 0) { + let uri = url.substring(0, url.indexOf('?')); + console.log(1, uri); + setAdressbarURL(uri); + setAdressbarURL(uri); + updateUserData(uri); + setAdressbarURL(uri); + updateUserData(uri); + } else { + console.log(2, url); + setAdressbarURL(url); + setAdressbarURL(url); + updateUserData(url); + setAdressbarURL(url); + updateUserData(url); + } + })(); }} style={AuthViewStyle.webViewStyles} source={{ diff --git a/src/screens/AuthScreen/Util.ts b/src/screens/AuthScreen/Util.ts index 792f712a..780e4414 100644 --- a/src/screens/AuthScreen/Util.ts +++ b/src/screens/AuthScreen/Util.ts @@ -1,5 +1,6 @@ import axios from 'axios'; import { urls } from '../../constants/appConstant/url'; +import { PermissionsAndroid } from 'react-native'; export const getUserData = async (url: string) => { if (url === urls.REDIRECT_URL) { @@ -61,3 +62,26 @@ export const updateMarkYourSelfAs_ = async (markStatus: string) => { export const isValidTextInput = (code: string) => Boolean(/^[\d]{1,4}$|^$/.test(code)); + +export const requestCameraPermission = async () => { + try { + const granted = await PermissionsAndroid.request( + PermissionsAndroid.PERMISSIONS.CAMERA, + { + title: 'Accessing your camera to scan the QR code', + message: + 'RDS App needs access to your camera ' + 'so you can scan QR code', + buttonNeutral: 'Ask Me Later', + buttonNegative: 'Cancel', + buttonPositive: 'OK', + }, + ); + if (granted === PermissionsAndroid.RESULTS.GRANTED) { + console.log('You can use the camera'); + } else { + console.log('Camera permission denied'); + } + } catch (err) { + console.warn(err); + } +};