import React, { useState } from 'react'; import { View, StyleSheet } from 'react-native'; import { useRouter } from 'expo-router'; import { BarcodeScanner } from '../components/BarcodeScanner'; import { searchMedicines } from '../services/medicines'; import { hasConsent } from '../services/consent'; import HealthConsentModal from '../components/HealthConsentModal'; export default function ScannerScreen() { const router = useRouter(); const [isSearching, setIsSearching] = useState(false); const [showHealthConsent, setShowHealthConsent] = useState(false); const [pendingBarcode, setPendingBarcode] = useState(null); const processBarcode = async (barcode: string) => { setIsSearching(true); try { const results = await searchMedicines(barcode); if (results.length > 0) { router.push(`/medicine/${results[0].nregistro}`); } else { router.push(`/medicine/${barcode}`); } } catch (error) { console.error('Error searching medicine:', error); router.push(`/medicine/${barcode}`); } finally { setIsSearching(false); } }; const handleBarcodeScanned = async (barcode: string) => { const healthConsent = await hasConsent('health_data'); if (!healthConsent) { setPendingBarcode(barcode); setShowHealthConsent(true); return; } await processBarcode(barcode); }; const handleClose = () => { router.back(); }; return ( {showHealthConsent && ( { setShowHealthConsent(false); if (pendingBarcode) { const { saveConsents, getLocalConsents } = await import('../services/consent'); const current = await getLocalConsents(); await saveConsents({ ...current, health_data: true }); await processBarcode(pendingBarcode); setPendingBarcode(null); } }} onCancel={() => { setShowHealthConsent(false); setPendingBarcode(null); }} /> )} ); } const styles = StyleSheet.create({ container: { flex: 1, }, });