// import { useFocusEffect } from "@react-navigation/native"; // import { Camera } from "expo-camera"; // import * as FileSystem from "expo-file-system"; // import React, { useEffect, useRef, useState } from "react"; // import { Text, View } from "react-native"; // import { connect } from "react-redux"; // import { createStructuredSelector } from "reselect"; // import { // selectCurrentCameraJob, // selectCurrentCameraJobId, // } from "../../redux/app/app.selectors"; // import { addPhoto } from "../../redux/photos/photos.actions"; // import CameraControls from "../camera-controls/camera-controls.component"; // import CameraSelectJob from "../camera-select-job/camera-select-job.component"; // const mapStateToProps = createStructuredSelector({ // cameraJobId: selectCurrentCameraJobId, // cameraJob: selectCurrentCameraJob, // }); // const mapDispatchToProps = (dispatch) => ({ // addPhoto: (photo) => dispatch(addPhoto(photo)), // }); // export function ScreenCamera({ cameraJobId, addPhoto }) { // const [hasPermission, setHasPermission] = useState(null); // const [state, setState] = useState({ // flashMode: Camera.Constants.FlashMode.off, // capturing: null, // cameraType: Camera.Constants.Type.back, // tabHasFocus: null, // }); // const cameraRef = useRef(null); // useFocusEffect( // React.useCallback(() => { // // Do something when the screen is focused // setState({ ...state, tabHasFocus: true }); // return () => { // // Do something when the screen is unfocused // // Useful for cleanup functions // setState({ ...state, tabHasFocus: false }); // }; // }, []) // ); // useEffect(() => { // (async () => { // const { status } = await Camera.requestPermissionsAsync(); // setHasPermission(status === "granted"); // })(); // }, []); // const setFlashMode = (flashMode) => setState({ ...state, flashMode }); // const setCameraType = (cameraType) => setState({ ...state, cameraType }); // const handleCaptureIn = () => setState({ ...state, capturing: true }); // const handleCaptureOut = () => { // if (state.capturing) cameraRef.current.stopRecording(); // }; // const handleShortCapture = async () => { // if (cameraRef.current) { // const options = { // quality: 0.8, // //base64: true, // skipProcessing: true, // }; // let photo = await cameraRef.current.takePictureAsync(options); // const filename = photo.uri.substring(photo.uri.lastIndexOf("/") + 1); // const newUri = FileSystem.documentDirectory + "photos/" + filename; // await FileSystem.moveAsync({ // from: photo.uri, // to: newUri, // }); // setState({ ...state, capturing: false }); // addPhoto({ // ...photo, // id: filename, // uri: newUri, // jobId: cameraJobId, // video: false, // }); // } // }; // const handleLongCapture = async () => { // console.log("Taking a video!"); // if (cameraRef.current) { // let video = await cameraRef.current.recordAsync(); // const filename = video.uri.substring(video.uri.lastIndexOf("/") + 1); // const newUri = FileSystem.documentDirectory + "photos/" + filename; // await FileSystem.moveAsync({ // from: video.uri, // to: newUri, // }); // setState({ ...state, capturing: false }); // console.log("Adding Photo", { // ...video, // id: filename, // uri: newUri, // jobId: cameraJobId, // video: true, // }); // addPhoto({ // ...video, // id: filename, // uri: newUri, // jobId: cameraJobId, // video: true, // }); // } // }; // if (hasPermission === null || !state.tabHasFocus) { // return ; // } // if (hasPermission === false) { // return No access to camera. Please ensure that you allow it.; // } // const { flashMode, cameraType, capturing } = state; // return ( // // // // // // // ); // } // export default connect(mapStateToProps, mapDispatchToProps)(ScreenCamera);