From fbaae8f461ff085356670d41506cd92180227beb Mon Sep 17 00:00:00 2001
From: omagdy7
Date: Sat, 23 Dec 2023 01:39:59 +0200
Subject: Final version
---
driver/src/pages/Home.tsx | 106 ++++++++++++++++++++++++++++++++++----------
driver/src/pages/SignUp.tsx | 3 +-
2 files changed, 83 insertions(+), 26 deletions(-)
(limited to 'driver/src/pages')
diff --git a/driver/src/pages/Home.tsx b/driver/src/pages/Home.tsx
index bd003b6..e2fb141 100644
--- a/driver/src/pages/Home.tsx
+++ b/driver/src/pages/Home.tsx
@@ -10,6 +10,9 @@ 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,
@@ -33,7 +36,8 @@ interface IPassengerRequest {
export default function Home() {
const [driverData, setDriverData] = useState()
const [rideRequests, setRideRequests] = useState([])
- const [currentTrip, setCurrentTrip] = useState()
+ const [currentTrip, setCurrentTrip] = useState(null)
+ const [toComplete, setToComplete] = useState(false)
const [isLoggedIn, setIsLoggedIn] = useState(true)
@@ -57,30 +61,45 @@ export default function Home() {
-
@@ -89,11 +108,38 @@ export default function Home() {
}
+ useEffect(() => {
+ const doWork = async () => {
+ if (toComplete) {
+ let phoneNumber = ''
+ 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 = await fetchRideRequests()
+ const rideReqs: any = await fetchRideRequests()
setDriverData(data)
setRideRequests(rideReqs)
}
@@ -173,13 +219,25 @@ export default function Home() {
Dropoff: {currentTrip?.dropOff}
-
- Start Trip
-
-
+ {
+ setToComplete(true);
+ }}
+ className="w-full mt-4 border-green-500 text-white" variant="outline">
Finish Trip
-
+ {
+ const newRideReqs = rideRequests.map((request) => {
+ if (request.status === "Accepted") {
+ return { ...request, status: 'Pending' };
+ }
+ return request;
+ })
+ setRideRequests(newRideReqs)
+ setCurrentTrip(null)
+ }}
+ className="w-full mt-4 border-red-500 text-white" variant="outline">
Cancel Trip
diff --git a/driver/src/pages/SignUp.tsx b/driver/src/pages/SignUp.tsx
index b73d810..dbe5e9c 100644
--- a/driver/src/pages/SignUp.tsx
+++ b/driver/src/pages/SignUp.tsx
@@ -4,7 +4,7 @@ import { Button } from "@/components/ui/button"
import { useState, useEffect } from 'react';
import { auth, db } from '../firebase/firebase_config';
import { createUserWithEmailAndPassword } from 'firebase/auth';
-import { Navigate, redirect } from "react-router-dom";
+import { Navigate } from "react-router-dom";
import { addDoc, collection } from "firebase/firestore";
const SignUp = () => {
@@ -43,7 +43,6 @@ const SignUp = () => {
const userCredential = await createUserWithEmailAndPassword(auth, email, password);
const usersCollection = collection(db, 'users');
const userUid = userCredential.user.uid; // Get the user's UID
- console.log(userUid, name, phoneNumber, carBrand, carModel, carColor, plateNumber)
addDoc(usersCollection, {
uid: userUid,
name: name,
--
cgit v1.2.3