import React, { useCallback, useRef, useState } from 'react' import { Button, StyleSheet, Text, View } from 'react-native' import { Camera, useCameraPermission, useCameraDevice, useCameraFormat, PhotoFile, VideoFile, CameraRuntimeError, Orientation, CameraDevice, } from 'react-native-vision-camera' import { RecordingButton } from './capture-button' import { useIsForeground } from './is-foreground' export default function CameraScreen() { const camera = useRef(null) const { hasPermission, requestPermission } = useCameraPermission() const [isCameraInitialized, setIsCameraInitialized] = useState(false) const isForeground: boolean = useIsForeground() const isActive: boolean = isForeground // Should be combined with isFocused hook const onError = useCallback((error: CameraRuntimeError) => { console.error(error) }, []) const onInitialized = useCallback(() => { console.log('Camera initialized!') setIsCameraInitialized(true) }, []) const onMediaCaptured = useCallback((media: PhotoFile | VideoFile) => { console.log(`Media captured! ${JSON.stringify(media)}`) }, []) if (!hasPermission) requestPermission() // Error handling in case they refuse to give permission const device = useCameraDevice('back') const format = useCameraFormat(device, [{ videoResolution: { width: 3048, height: 2160 } }, { fps: 60 }]) // this sets as a target //Orientation detection const [orientation, setOrientation] = useState('portrait') const toggleOrientation = () => { setOrientation( (currentOrientation) => (currentOrientation === 'landscape-left' ? 'portrait' : 'landscape-left'), // Can adjust this and the type to match what we want ) } // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition if (device === null) return Camera not available. Does user have permissions: {hasPermission} return ( hasPermission && (