diff --git a/example/src/Splash.tsx b/example/src/Splash.tsx index bbc90b0..396fdef 100644 --- a/example/src/Splash.tsx +++ b/example/src/Splash.tsx @@ -1,10 +1,11 @@ -import React, { useEffect, useState } from 'react'; +import React, { useCallback, useEffect, useState } from 'react'; import { StyleSheet, View, Text, Image } from 'react-native'; +import { Navigation, NavigationFunctionComponent } from 'react-native-navigation'; import { Camera, CameraPermissionStatus } from 'react-native-vision-camera'; -import { SAFE_AREA_PADDING } from './Constants'; +import { CONTENT_SPACING, SAFE_AREA_PADDING } from './Constants'; -export default function Splash() { +export const Splash: NavigationFunctionComponent = ({ componentId }) => { const [ cameraPermissionStatus, setCameraPermissionStatus, @@ -14,6 +15,20 @@ export default function Splash() { setMicrophonePermissionStatus, ] = useState("not-determined"); + const requestMicrophonePermission = useCallback(async () => { + console.log('Requesting microphone permission...'); + const permission = await Camera.requestMicrophonePermission(); + console.log(`Microphone permission status: ${permission}`); + setMicrophonePermissionStatus(permission); + }, []); + + const requestCameraPermission = useCallback(async () => { + console.log('Requesting camera permission...'); + const permission = await Camera.requestCameraPermission(); + console.log(`Camera permission status: ${permission}`); + setCameraPermissionStatus(permission); + }, []); + useEffect(() => { const checkPermissions = async () => { console.log(`Checking Permission status...`); @@ -24,13 +39,6 @@ export default function Splash() { console.log( `Check: CameraPermission: ${cameraPermission} | MicrophonePermission: ${microphonePermission}` ); - if (cameraPermission !== "authorized") - cameraPermission = await Camera.requestCameraPermission(); - if (microphonePermission !== "authorized") - microphonePermission = await Camera.requestMicrophonePermission(); - console.log( - `Request: CameraPermission: ${cameraPermission} | MicrophonePermission: ${microphonePermission}` - ); setCameraPermissionStatus(cameraPermission); setMicrophonePermissionStatus(microphonePermission); }; @@ -38,14 +46,27 @@ export default function Splash() { checkPermissions(); }, []); + useEffect(() => { + if (cameraPermissionStatus === 'authorized' && microphonePermissionStatus === 'authorized') { + Navigation.push(componentId, { + component: { name: 'Home' } + }) + } + }, []); + return ( Welcome to{'\n'}Vision Camera. - - Camera Permission: {cameraPermissionStatus} - Camera Permission: {microphonePermissionStatus} + + {cameraPermissionStatus !== 'authorized' && ( + Vision Camera needs Camera permission. Grant + )} + {microphonePermissionStatus !== 'authorized' && ( + Vision Camera needs Microphone permission. Grant + )} + ); } @@ -67,9 +88,17 @@ const styles = StyleSheet.create({ backgroundColor: 'white', ...SAFE_AREA_PADDING }, - box: { - width: 60, - height: 60, - marginVertical: 20, + permissionsContainer: { + marginTop: CONTENT_SPACING *2 + }, + permissionText: { + fontSize: 17, + }, + hyperlink: { + color: '#007aff', + fontWeight: 'bold', + }, + bold: { + fontWeight: 'bold', }, });