import React, { useEffect, useState } from 'react'; import { useRouter } from 'expo-router'; import { View, Text, Button, Alert, StyleSheet } from 'react-native'; import { getAuth } from 'firebase/auth'; import { collection, addDoc } from 'firebase/firestore'; // Make sure these are imported import { db } from '@/firebase/config'; // Ensure this path is correct import { useCart } from '@/app/context/cartContext'; const CartScreen = () => { const { cart, clearCart } = useCart(); const auth = getAuth(); const [isAuthenticated, setIsAuthenticated] = useState(false); const router = useRouter(); // Check if the user is logged in when the component mounts useEffect(() => { const user = auth.currentUser; if (user) { setIsAuthenticated(true); } else { setIsAuthenticated(false); router.push('../screens/auth/SignInScreen'); // Redirect to sign-in screen if not logged in } }, [auth, router]); const handleConfirmOrder = async () => { if (!isAuthenticated) { Alert.alert('Erreur', 'Utilisateur non connecté.'); return; } if (cart.total <= 0) { Alert.alert('Panier vide', 'Veuillez ajouter des produits à votre panier'); return; } try { const userId = auth.currentUser?.uid; if (!userId) { Alert.alert('Erreur', 'Utilisateur non connecté.'); return; } const orderData: any = { userId, status: 'En attente', }; cart.items.forEach((item, index) => { orderData[`item${index + 1}`] = [item.quantity, item.productName]; }); await addDoc(collection(db, 'orders'), orderData); Alert.alert('Commande confirmée', 'Votre commande a été enregistrée.'); clearCart(); } catch (error) { console.error('Erreur de commande', error); Alert.alert('Erreur', "Impossible d'enregistrer la commande."); } }; if (!isAuthenticated) { return Chargement...; // Loading state while checking authentication } return ( Votre Panier {cart.items.length === 0 ? ( Votre panier est vide. ) : ( cart.items.map((item, index) => ( {item.productName} - Quantité : {item.quantity} )) )} {cart.items.length > 0 && (