import { CameraView, useCameraPermissions } from "expo-camera"; import * as ImagePicker from "expo-image-picker"; import { router } from "expo-router"; import { useRef, useState } from "react"; import { Alert, Image, Pressable, ScrollView, View } from "react-native"; import { useSafeAreaInsets } from "react-native-safe-area-context"; import { Ionicons } from "@expo/vector-icons"; import { useTranslation } from "react-i18next"; import { Button } from "@/components/ui/Button"; import { Card } from "@/components/ui/Card"; import { Screen } from "@/components/ui/Screen"; import { Text } from "@/components/ui/Text"; import { usePrescriptionStore } from "@/lib/stores/prescriptionStore"; import { colors, gutter } from "@/lib/theme"; import { routes } from "@/lib/routes"; export default function RxScanScreen() { const insets = useSafeAreaInsets(); const { t } = useTranslation(); const [permission, requestPermission] = useCameraPermissions(); const cameraRef = useRef(null); const draftImages = usePrescriptionStore((s) => s.draftImages); const setDraftImages = usePrescriptionStore((s) => s.setDraftImages); const [ready, setReady] = useState(false); const capture = async () => { const photo = await cameraRef.current?.takePictureAsync({ quality: 0.7 }); if (photo?.uri) setDraftImages([...draftImages, photo.uri]); }; const pick = async () => { const res = await ImagePicker.launchImageLibraryAsync({ allowsMultipleSelection: true, quality: 0.7, }); if (!res.canceled) { setDraftImages([...draftImages, ...res.assets.map((a) => a.uri)]); } }; const removeAt = (uri: string) => { setDraftImages(draftImages.filter((u) => u !== uri)); }; if (!permission?.granted) { return ( Scan prescription Allow camera access to photograph your prescription, or upload existing photos. Tips: place the Rx on a flat surface, include the full page, and avoid glare.