import RideDialog from "@/components/RideDialog" // import { Avatar } from "@/components/ui/avatar" import { Badge } from "@/components/ui/badge" import { Button } from "@/components/ui/button" import { CardTitle, CardHeader, CardContent, Card } from "@/components/ui/card" import { auth, db } from "@/firebase/firebase_config" import { fetchUserDetails } from "@/utils/fetchUserDetails" import { Toaster } from "@/components/ui/toaster" import { useEffect, useState } from "react" import { Navigate } from "react-router-dom" import { fetchRideRequests } from "@/utils/fetchRideRequests" import { collection, onSnapshot } from "firebase/firestore" import { toast } from "@/components/ui/use-toast" import { updateStatus } from "@/utils/updateStatus" import { fetchUserIdByPhoneNumber } from "@/utils/fetchUserIdByPhoneNumber" interface IDriver { uid: string, name: string, phoneNumber: string, plateNumber: string, carBrand: string, carModel: string, carColor: string, } interface IPassengerRequest { passengerName: string, phoneNumber: string, status: string, pickUp: string, dropOff: string, } export default function Home() { const [driverData, setDriverData] = useState() const [rideRequests, setRideRequests] = useState([]) const [currentTrip, setCurrentTrip] = useState(null) const [toComplete, setToComplete] = useState(false) const [isLoggedIn, setIsLoggedIn] = useState(true) function PassengerRequestCard({ passengerName, pickUp, dropOff, status, phoneNumber }: IPassengerRequest) { return (
  • Passenger: {passengerName}

    Phone Number: {phoneNumber}

    Status: {status}

    Pickup: {pickUp}

    Dropoff: {dropOff}

  • ) } useEffect(() => { const doWork = async () => { if (toComplete) { let phoneNumber = '' console.log(rideRequests) const newRideReqs = rideRequests.map((request) => { if (request.status === "Accepted") { phoneNumber = request.phoneNumber; return { ...request, status: 'Completed' }; } return request; }) const userId = await fetchUserIdByPhoneNumber(phoneNumber) if (userId) { await updateStatus(userId, "Completed") } setRideRequests(newRideReqs) setCurrentTrip(null) } } doWork() return () => { doWork() } }, [toComplete]) useEffect(() => { const user = auth.currentUser; async function fetchData() { const data: IDriver | null | undefined = await fetchUserDetails(user?.uid); const rideReqs: any = await fetchRideRequests() setDriverData(data) setRideRequests(rideReqs) } fetchData() // Firestore real-time listener for changes const unsubscribe = onSnapshot(collection(db, "RideRequest"), () => { // Call fetchData when changes occur in the specified collection fetchData(); }); return () => { unsubscribe() } }, [auth.currentUser, db]); return ( !isLoggedIn ? : (

    Driver Dashboard

    {/* */}

    {driverData?.name}

    Active Driver
    Vehicle Details
    • Brand: {driverData?.carBrand}
    • Model: {driverData?.carModel}
    • License Plate: {driverData?.plateNumber}
    Current Trip

    Passenger: {currentTrip?.passengerName}

    Phone Number: {currentTrip?.phoneNumber}

    Status: {currentTrip?.status}

    Pickup: {currentTrip?.pickUp}

    Dropoff: {currentTrip?.dropOff}

    Passenger Requests
      {rideRequests?.filter((rideReq) => rideReq?.status == "Pending") .map((rideReq) => { return ( < PassengerRequestCard passengerName={rideReq?.passengerName} pickUp={rideReq?.pickUp} dropOff={rideReq?.dropOff} phoneNumber={rideReq?.phoneNumber} status={rideReq?.status} /> ) })}
    ) ) }