({ packageSlug }: { packageSlug: CarPackageSlug })
| 39 | }); |
| 40 | |
| 41 | export const DriverMap = ({ packageSlug }: { packageSlug: CarPackageSlug }) => { |
| 42 | const mapRef = useRef<L.Map>(null) |
| 43 | const userID = useMemo(() => crypto.randomUUID(), []) |
| 44 | const [riderLocation, setRiderLocation] = useState<Coordinate>(START_LOCATION) |
| 45 | |
| 46 | const driverGeohash = useMemo(() => |
| 47 | Geohash.encode(riderLocation?.latitude, riderLocation?.longitude, 7) |
| 48 | , [riderLocation?.latitude, riderLocation?.longitude]); |
| 49 | |
| 50 | const { |
| 51 | error, |
| 52 | driver, |
| 53 | tripStatus, |
| 54 | requestedTrip, |
| 55 | sendMessage, |
| 56 | setTripStatus, |
| 57 | resetTripStatus, |
| 58 | } = useDriverStreamConnection({ |
| 59 | location: riderLocation, |
| 60 | geohash: driverGeohash, |
| 61 | userID, |
| 62 | packageSlug, |
| 63 | }) |
| 64 | |
| 65 | const handleMapClick = (e: L.LeafletMouseEvent) => { |
| 66 | setRiderLocation({ |
| 67 | latitude: e.latlng.lat, |
| 68 | longitude: e.latlng.lng |
| 69 | }) |
| 70 | } |
| 71 | |
| 72 | const handleAcceptTrip = () => { |
| 73 | if (!requestedTrip || !requestedTrip.id || !driver) { |
| 74 | alert("No trip ID found or driver is not set") |
| 75 | return |
| 76 | } |
| 77 | |
| 78 | sendMessage({ |
| 79 | type: TripEvents.DriverTripAccept, |
| 80 | data: { |
| 81 | tripID: requestedTrip.id, |
| 82 | riderID: requestedTrip.userID, |
| 83 | driver: driver, |
| 84 | } |
| 85 | }) |
| 86 | |
| 87 | setTripStatus(TripEvents.DriverTripAccept) |
| 88 | |
| 89 | } |
| 90 | |
| 91 | const handleDeclineTrip = () => { |
| 92 | if (!requestedTrip || !requestedTrip.id || !driver) { |
| 93 | alert("No trip ID found or driver is not set") |
| 94 | return |
| 95 | } |
| 96 | |
| 97 | sendMessage({ |
| 98 | type: TripEvents.DriverTripDecline, |
nothing calls this directly
no test coverage detected