import { ButtonCustom, Spacing, StackCustom, ViewWrapper } from "@/components"; import AntDesign from "@expo/vector-icons/AntDesign"; import FontAwesome6 from "@expo/vector-icons/FontAwesome6"; import { CameraType, CameraView, useCameraPermissions } from "expo-camera"; import { Image } from "expo-image"; import * as ImagePicker from "expo-image-picker"; import { router, useLocalSearchParams } from "expo-router"; import { useRef, useState } from "react"; import { Pressable, StyleSheet, Text, View } from "react-native"; export default function TakePicture() { const { id } = useLocalSearchParams(); // console.log("Take Picture ID >>", id); const [permission, requestPermission] = useCameraPermissions(); const ref = useRef(null); const [uri, setUri] = useState(null); const [facing, setFacing] = useState("back"); if (!permission?.granted) { return ( We need your permission to use the camera Grant permission ); } const takePicture = async () => { const photo = await ref.current?.takePictureAsync(); setUri(photo?.uri || null); }; const pickImage = async () => { const result = await ImagePicker.launchImageLibraryAsync({ mediaTypes: ImagePicker.MediaTypeOptions.Images, allowsEditing: true, aspect: [1, 1], quality: 1, }); if (!result.canceled) { setUri(result.assets[0].uri); } }; const toggleFacing = () => { setFacing((prev) => (prev === "back" ? "front" : "back")); }; const renderPicture = () => { return ( setUri(null)} title="Foto ulang" /> { console.log("Upload picture >>", id); router.back(); }} title="Upload Foto" /> ); }; const renderCameraUI = () => { return ( {({ pressed }) => ( )} ); }; return ( <> {uri ? ( {renderPicture()} ) : ( <> {renderCameraUI()} )} ); } const styles = StyleSheet.create({ container: { justifyContent: "center", alignItems: "center", }, camera: { flex: 1, width: "100%", }, cameraOverlay: { ...StyleSheet.absoluteFillObject, justifyContent: "flex-end", padding: 44, }, shutterContainer: { flexDirection: "row", justifyContent: "space-between", alignItems: "center", }, shutterBtn: { backgroundColor: "transparent", borderWidth: 5, borderColor: "white", width: 85, height: 85, borderRadius: 45, alignItems: "center", justifyContent: "center", }, shutterBtnInner: { width: 70, height: 70, borderRadius: 50, backgroundColor: "white", }, });