From a788ccd685222198e4fd284c57346aa95e97b6a3 Mon Sep 17 00:00:00 2001 From: Chris Gomez Date: Tue, 5 Nov 2024 10:40:12 +0800 Subject: [PATCH] feat(#42): Driver Manages Ride Request Notification and Trip Completion (#46) * feat(#42): Driver Manages Ride Request Notification and Trip Completion - Adding app icon on ios - generating routes using mapbox - checking for permissions and blocking the app if they are not given * feat(#42): Driver Manages Ride Request Notification and Trip Completion - Mark pending ride requests as completed when accepting one * feat(#42): Driver Manages Ride Request Notification and Trip Completion - only fetch route once every minute when there is a ride request - remove asking for locaton permission on location manager (optional) - refactoring * feat(#42): Driver Manages Ride Request Notification and Trip Completion - fixing getting routes multiple times * feat(#42): Driver Manages Ride Request Notification and Trip Completion - adding reconecting to mqtt - moving subscribing from publish location to connect - showing connection status to the user * feat(#42): Driver Manages Ride Request Notification and Trip Completion - updating route if driver moves and there is an ongoing ride * feat(#42): Driver Manages Ride Request Notification and Trip Completion - removed harcoded references to ips * feat(#42): Driver Manages Ride Request Notification and Trip Completion - fixed a bug (more than 1 nearby driver only found 1 - improving mqtt client * feat(#42): Driver Manages Ride Request Notification and Trip Completion - added endpoint for requests - loading requests on app start - loading requests on auth * feat(#42): Driver Manages Ride Request Notification and Trip Completion - fixing nearby drivers utility * feat(#42): Driver Manages Ride Request Notification and Trip Completion - updating ride request instead of replacing - using axios due to cache issues * feat(#42): Driver Manages Ride Request Notification and Trip Completion - updating ride cards ui --- apps/api/.env | 2 +- apps/api/src/config/database.ts | 3 +- apps/api/src/controllers/driver-controller.ts | 33 ++- apps/api/src/controllers/rider-controller.ts | 99 ++++--- apps/api/src/controllers/token-controlller.ts | 2 +- apps/api/src/middleware/auth.ts | 3 +- apps/api/src/models/driver.ts | 33 ++- apps/api/src/models/index.ts | 15 + apps/api/src/models/ride-request.ts | 86 +++--- apps/api/src/models/rider.ts | 29 +- apps/api/src/mqtt-listener.ts | 6 +- apps/api/src/ride-request-processor.ts | 46 +-- apps/api/src/routes/driver-routes.ts | 2 + apps/api/src/services/queue-service.ts | 2 +- apps/api/src/utils/nearby-drivers.ts | 91 +++--- apps/api/src/utils/ride-data-transformer.ts | 66 +++-- apps/driver-app/.env | 4 +- apps/driver-app/app.json | 4 +- apps/driver-app/app/_layout.tsx | 1 - apps/driver-app/app/main.tsx | 17 +- apps/driver-app/assets/images/app-icon.jpg | Bin 0 -> 141726 bytes apps/driver-app/images/navigation.png | Bin 0 -> 1432 bytes .../xcshareddata/xcschemes/driverapp.xcscheme | 4 +- .../App-Icon-1024x1024@1x.png | Bin 59468 -> 141726 bytes .../AppIcon.appiconset/Contents.json | 18 +- apps/driver-app/package.json | 1 + apps/driver-app/src/api/models.ts | 5 +- .../animated-ride-request-card/index.tsx | 67 +++++ .../animated-ride-request-card/styles.ts | 0 .../src/components/map-view/index.tsx | 279 ++++++++++++++++-- .../src/components/map-view/styles.ts | 13 +- .../components/permission-blocker/index.tsx | 114 +++++++ .../src/components/ride-card/index.tsx | 123 ++++++++ .../src/components/ride-card/props.ts | 10 + .../src/components/ride-card/styles.ts | 61 ++++ .../ride-request-dashboard/index.tsx | 167 +++++------ apps/driver-app/src/components/setup.tsx | 19 ++ .../src/components/status-card/index.tsx | 50 ++++ .../components/trip-complete-card/index.tsx | 3 +- .../components/trip-complete-card/props.ts | 10 +- .../trip-in-progress-card/index.tsx | 2 +- .../src/components/trip-start-card/index.tsx | 2 +- apps/driver-app/src/config/index.ts | 4 +- .../src/hooks/use-foreground-location.ts | 5 +- .../src/hooks/use-location-manager.ts | 50 +++- apps/driver-app/src/hooks/use-mqtt-client.ts | 2 - apps/driver-app/src/hooks/use-route.ts | 48 +++ apps/driver-app/src/services/map-service.ts | 60 ++++ .../src/services/mqtt-client-service.ts | 203 +++++++------ apps/driver-app/src/store/index.ts | 32 +- .../fetch-ride-requests-middleware.ts | 86 ++++++ .../store/middleware/timeout-middleware.ts | 70 +++++ apps/driver-app/src/store/slices/api-slice.ts | 16 +- .../src/store/slices/ride-request-slice.ts | 168 ++++++++--- apps/driver-app/src/utils/location-utils.ts | 24 ++ apps/driver-app/tsconfig.json | 2 +- docker-compose.yml | 8 +- 57 files changed, 1748 insertions(+), 522 deletions(-) create mode 100644 apps/api/src/models/index.ts create mode 100644 apps/driver-app/assets/images/app-icon.jpg create mode 100644 apps/driver-app/images/navigation.png create mode 100644 apps/driver-app/src/components/animated-ride-request-card/index.tsx create mode 100644 apps/driver-app/src/components/animated-ride-request-card/styles.ts create mode 100644 apps/driver-app/src/components/permission-blocker/index.tsx create mode 100644 apps/driver-app/src/components/ride-card/index.tsx create mode 100644 apps/driver-app/src/components/ride-card/props.ts create mode 100644 apps/driver-app/src/components/ride-card/styles.ts create mode 100644 apps/driver-app/src/components/status-card/index.tsx create mode 100644 apps/driver-app/src/hooks/use-route.ts create mode 100644 apps/driver-app/src/services/map-service.ts create mode 100644 apps/driver-app/src/store/middleware/fetch-ride-requests-middleware.ts create mode 100644 apps/driver-app/src/store/middleware/timeout-middleware.ts create mode 100644 apps/driver-app/src/utils/location-utils.ts diff --git a/apps/api/.env b/apps/api/.env index ab8851a..3d9f2b9 100644 --- a/apps/api/.env +++ b/apps/api/.env @@ -1,3 +1,3 @@ PORT=3000 -DATABASE_URL=postgres://morro_user:morro_pass@127.0.0.1:5432/morrotaxi +DATABASE_URL=postgres://morro_user:morro_pass@db:5432/morrotaxi BCRYPT_SALT_ROUNDS=12 \ No newline at end of file diff --git a/apps/api/src/config/database.ts b/apps/api/src/config/database.ts index 315fca6..7719b80 100644 --- a/apps/api/src/config/database.ts +++ b/apps/api/src/config/database.ts @@ -7,7 +7,8 @@ dotenv.config(); const sequelize = new Sequelize(process.env.DATABASE_URL as string, { dialect: "postgres", logging: false, - operatorsAliases: false, }); + + export default sequelize; \ No newline at end of file diff --git a/apps/api/src/controllers/driver-controller.ts b/apps/api/src/controllers/driver-controller.ts index 781583d..62e36e1 100644 --- a/apps/api/src/controllers/driver-controller.ts +++ b/apps/api/src/controllers/driver-controller.ts @@ -1,9 +1,9 @@ +import { transformRideData } from '@/utils/ride-data-transformer'; import bcrypt from 'bcrypt'; import { Context } from 'koa'; import { Op } from 'sequelize'; -import Driver from '../models/driver'; -import RideRequest from '../models/ride-request'; -import Rider from '../models/rider'; +import { Driver, RideRequest, Rider } from '../models'; + import logger from '../utils/logger'; import { generateAccessToken, @@ -307,3 +307,30 @@ export const completeRideRequest = async (ctx: Context) => { ctx.body = { error: 'Server error. Please try again later.' }; } }; + +export const getRideRequests = async (ctx: Context) => { + const driverId = ctx.state.user.id; // Assumes driver is authenticated, and ID is stored in the token + logger.info(`Fetching ride requests for driver ${driverId}`); + + console.error('HOLAAAA'); + try { + const rideRequests = await RideRequest.findAll({ + where: { driverId }, + order: [['updatedAt', 'DESC']] // Orders by updatedAt descending + }); + const user = (await Driver.findByPk(driverId)) as any; + const transformedRideRequests = await Promise.all( + rideRequests.map((rideRequest) => transformRideData(user, rideRequest)) + ); + + ctx.status = 200; + ctx.body = { data: transformedRideRequests }; // Returns an empty array if no ride requests are found + logger.info( + `Fetched ${rideRequests.length} ride requests for driver ${driverId}` + ); + } catch (error) { + logger.error(error); + ctx.status = 500; + ctx.body = { error: 'Server error. Please try again later.' }; + } +}; diff --git a/apps/api/src/controllers/rider-controller.ts b/apps/api/src/controllers/rider-controller.ts index 17c265d..f1107d4 100644 --- a/apps/api/src/controllers/rider-controller.ts +++ b/apps/api/src/controllers/rider-controller.ts @@ -1,90 +1,94 @@ import { queueService } from '@/services'; import { Context } from 'koa'; import { Op } from 'sequelize'; -import RideRequest from '../models/ride-request'; -import Rider from '../models/rider'; +import { RideRequest, Rider } from '../models'; import logger from '../utils/logger'; import { generateAccessToken, generateRefreshToken } from '../utils/token-utils'; +interface RegisterRiderRequestBody { + name: string; + email: string; + phone: string; + password: string; +} + +interface RideRequestLocation { + latitude: number; + longitude: number; + address: string; +} + +interface CreateRideRequestBody { + pickupLocation: RideRequestLocation; + dropOffLocation: RideRequestLocation; +} + +// Utility function to send error response +const sendErrorResponse = (ctx: Context, status: number, message: string) => { + ctx.status = status; + ctx.body = { error: message }; +}; + +// Register Rider export const registerRider = async (ctx: Context) => { - const { name, email, phone, password } = ctx.request.body as { - name: string; - email: string; - phone: string; - password: string; - }; + const { name, email, phone, password } = ctx.request.body as RegisterRiderRequestBody; + // Validation if (!name || !email || !phone || !password) { - ctx.status = 400; - ctx.body = { error: 'All fields are required.' }; - return; + return sendErrorResponse(ctx, 400, 'All fields are required.'); } if (password.length < 8) { - ctx.status = 400; - ctx.body = { error: 'Password must be at least 8 characters.' }; - return; + return sendErrorResponse(ctx, 400, 'Password must be at least 8 characters.'); } try { + // Check if rider exists const existingRider = await Rider.findOne({ where: { [Op.or]: [{ email }, { phone }] } }); if (existingRider) { - ctx.status = 409; - ctx.body = { error: 'Email or phone number already registered.' }; - return; + return sendErrorResponse(ctx, 409, 'Email or phone number already registered.'); } + // Create new rider const newRider = await Rider.create({ name, email, phone, password }); - - const accessToken = generateAccessToken(newRider.id, 'rider'); + const accessToken = generateAccessToken(newRider.dataValues.id, 'rider'); const refreshToken = generateRefreshToken(); - await newRider.update({ refreshToken }); + // Success response ctx.status = 201; ctx.body = { message: 'Rider registered successfully.', - riderId: newRider.id, + riderId: newRider.dataValues.id, accessToken, refreshToken }; } catch (error) { - logger.error(error); - ctx.status = 500; - ctx.body = { error: 'Server error. Please try again later.' }; + logger.error('Error registering rider:', error); + sendErrorResponse(ctx, 500, 'Server error. Please try again later.'); } }; +// Create Ride Request export const createRideRequest = async (ctx: Context) => { - const { pickupLocation, dropOffLocation } = ctx.request.body as { - pickupLocation: { - latitude: number; - longitude: number; - address: string; - }; - dropOffLocation: { - latitude: number; - longitude: number; - address: string; - }; - }; - + const { pickupLocation, dropOffLocation } = ctx.request.body as CreateRideRequestBody; const riderId = ctx.state.user.id; + // Validation if (!pickupLocation || !dropOffLocation) { - ctx.status = 400; - ctx.body = { - error: - 'Pickup location and drop-off location are required for a ride request.' - }; - return; + return sendErrorResponse( + ctx, + 400, + 'Pickup location and drop-off location are required for a ride request.' + ); } try { + // Create new ride request const newRideRequest = await RideRequest.create({ riderId, pickupLocation: { @@ -101,17 +105,18 @@ export const createRideRequest = async (ctx: Context) => { }); logger.info(`Ride request created: ${newRideRequest.pickupAddress}`); - + + // Queue the ride request await queueService.addRideRequestToQueue(newRideRequest); + // Success response ctx.status = 201; ctx.body = { message: 'Ride request created successfully and added to the queue.', rideRequestId: newRideRequest.id }; } catch (error) { - logger.error(error); - ctx.status = 500; - ctx.body = { error: 'Server error. Please try again later.' }; + logger.error('Error creating ride request:', error); + sendErrorResponse(ctx, 500, 'Server error. Please try again later.'); } }; diff --git a/apps/api/src/controllers/token-controlller.ts b/apps/api/src/controllers/token-controlller.ts index 1d87cc7..8856aee 100644 --- a/apps/api/src/controllers/token-controlller.ts +++ b/apps/api/src/controllers/token-controlller.ts @@ -1,5 +1,5 @@ import { Context } from 'koa'; -import Driver from '../models/driver'; +import { Driver } from '../models'; import { generateAccessToken } from '../utils/token-utils'; export const refreshAccessToken = async (ctx: Context) => { diff --git a/apps/api/src/middleware/auth.ts b/apps/api/src/middleware/auth.ts index eed668c..e454aed 100644 --- a/apps/api/src/middleware/auth.ts +++ b/apps/api/src/middleware/auth.ts @@ -1,8 +1,7 @@ import logger from '@/utils/logger'; import jwt from 'jsonwebtoken'; import { Context, Next } from 'koa'; -import Driver from '../models/driver'; -import Rider from '../models/rider'; +import { Driver, Rider } from '../models'; const ACCESS_TOKEN_SECRET = process.env.ACCESS_TOKEN_SECRET || 'access-secret'; diff --git a/apps/api/src/models/driver.ts b/apps/api/src/models/driver.ts index 2aebd35..24e26fa 100644 --- a/apps/api/src/models/driver.ts +++ b/apps/api/src/models/driver.ts @@ -19,12 +19,12 @@ interface DriverAttributes { coordinates: [number, number]; // [longitude, latitude] }; lastLocationUpdatedAt?: Date; - isAvailable?: boolean; + isAvailable: boolean; } interface DriverCreationAttributes extends Optional {} -class Driver extends Model { +class Driver extends Model implements DriverAttributes { public id!: string; public name!: string; public email!: string; @@ -41,68 +41,71 @@ class Driver extends Model { public lastLocationUpdatedAt?: Date; public isAvailable!: boolean; + // Method to compare encrypted password public async comparePassword(password: string): Promise { return bcrypt.compare(password, this.password); } } +// Initialize the Driver model Driver.init( { id: { type: DataTypes.UUID, defaultValue: DataTypes.UUIDV4, - primaryKey: true, + primaryKey: true }, name: { type: DataTypes.STRING, - allowNull: false, + allowNull: false }, email: { type: DataTypes.STRING, allowNull: false, unique: true, - validate: { isEmail: true }, + validate: { isEmail: true } }, phone: { type: DataTypes.STRING, allowNull: false, - unique: true, + unique: true }, password: { type: DataTypes.STRING, - allowNull: false, + allowNull: false }, refreshToken: { type: DataTypes.STRING, - allowNull: true, + allowNull: true }, loginAt: { type: DataTypes.DATE, - allowNull: true, + allowNull: true }, location: { type: DataTypes.GEOGRAPHY('POINT', 4326), - allowNull: true, + allowNull: true }, lastLocationUpdatedAt: { type: DataTypes.DATE, - allowNull: true, + allowNull: true }, isAvailable: { type: DataTypes.BOOLEAN, allowNull: false, - defaultValue: true, - }, + defaultValue: true + } }, { sequelize, tableName: 'drivers', hooks: { + // Hook to hash password before creating the driver instance beforeCreate: async (driver) => { driver.password = await bcrypt.hash(driver.password, saltRounds); - }, + } }, - timestamps: true, + timestamps: true } ); diff --git a/apps/api/src/models/index.ts b/apps/api/src/models/index.ts new file mode 100644 index 0000000..0529823 --- /dev/null +++ b/apps/api/src/models/index.ts @@ -0,0 +1,15 @@ +import sequelize from '@/config/database'; +import Driver from './driver'; +import RideRequest from './ride-request'; +import Rider from './rider'; + +Driver.hasOne(RideRequest, { + foreignKey: 'driverId', + as: 'currentRideRequest' +}); +RideRequest.belongsTo(Driver, { foreignKey: 'driverId', as: 'driver' }); + +Rider.hasMany(RideRequest, { foreignKey: 'riderId', as: 'rideRequests' }); +RideRequest.belongsTo(Rider, { foreignKey: 'riderId', as: 'rider' }); + +export { Driver, Rider, RideRequest, sequelize }; diff --git a/apps/api/src/models/ride-request.ts b/apps/api/src/models/ride-request.ts index 80fae5a..e9746f8 100644 --- a/apps/api/src/models/ride-request.ts +++ b/apps/api/src/models/ride-request.ts @@ -1,21 +1,21 @@ +// src/models/ride-request.ts + import { DataTypes, Model, Optional } from 'sequelize'; import sequelize from '../config/database'; -import Driver from './driver'; -import Rider from './rider'; interface RideRequestAttributes { id: string; - pickupLocation: { - type: 'Point'; - coordinates: [number, number]; // [longitude, latitude] - }; + pickupLocation: { type: 'Point'; coordinates: [number, number] }; pickupAddress: string; - dropOffLocation: { - type: 'Point'; - coordinates: [number, number]; - }; + dropOffLocation: { type: 'Point'; coordinates: [number, number] }; dropOffAddress: string; - status: 'pending' | 'accepted' | 'declined' | 'started' | 'picked-up' | 'dropped-off'; + status: + | 'pending' + | 'accepted' + | 'declined' + | 'started' + | 'picked-up' + | 'dropped-off'; createdAt?: Date; updatedAt?: Date; driverId?: string | null; @@ -23,86 +23,98 @@ interface RideRequestAttributes { } interface RideRequestCreationAttributes - extends Optional {} + extends Optional< + RideRequestAttributes, + 'id' | 'status' | 'driverId' | 'riderId' + > {} class RideRequest extends Model implements RideRequestAttributes { public id!: string; - public pickupLocation!: { - type: 'Point'; - coordinates: [number, number]; - }; + public pickupLocation!: { type: 'Point'; coordinates: [number, number] }; public pickupAddress!: string; - public dropOffLocation!: { - type: 'Point'; - coordinates: [number, number]; - }; + public dropOffLocation!: { type: 'Point'; coordinates: [number, number] }; public dropOffAddress!: string; - status!: 'pending' | 'accepted' | 'declined' | 'started' | 'picked-up' | 'dropped-off'; + public status!: + | 'pending' + | 'accepted' + | 'declined' + | 'started' + | 'picked-up' + | 'dropped-off'; public createdAt!: Date; public updatedAt!: Date; public driverId!: string | null; public riderId!: string; } +// Initialize the RideRequest model with its attributes and configuration RideRequest.init( { id: { type: DataTypes.UUID, defaultValue: DataTypes.UUIDV4, - primaryKey: true, + primaryKey: true }, pickupLocation: { type: DataTypes.GEOGRAPHY('POINT', 4326), - allowNull: false, + allowNull: false }, pickupAddress: { type: DataTypes.STRING, - allowNull: false, + allowNull: false }, dropOffLocation: { type: DataTypes.GEOGRAPHY('POINT', 4326), - allowNull: false, + allowNull: false }, dropOffAddress: { type: DataTypes.STRING, - allowNull: false, + allowNull: false }, status: { - type: DataTypes.ENUM('pending', 'accepted', 'declined', 'started', 'picked-up', 'dropped-off'), + type: DataTypes.ENUM( + 'pending', + 'accepted', + 'declined', + 'started', + 'picked-up', + 'dropped-off' + ), defaultValue: 'pending', - allowNull: false, + allowNull: false }, driverId: { type: DataTypes.UUID, allowNull: true, references: { - model: Driver, - key: 'id', - }, + model: 'drivers', + key: 'id' + } }, riderId: { type: DataTypes.UUID, allowNull: false, references: { - model: Rider, - key: 'id', - }, - }, + model: 'riders', + key: 'id' + } + } }, { sequelize, tableName: 'ride_requests', timestamps: true, hooks: { + // Sets the status to 'pending' if not provided beforeCreate: (rideRequest) => { if (!rideRequest.status) { rideRequest.status = 'pending'; } - }, - }, + } + } } ); diff --git a/apps/api/src/models/rider.ts b/apps/api/src/models/rider.ts index 87b1681..9fc592e 100644 --- a/apps/api/src/models/rider.ts +++ b/apps/api/src/models/rider.ts @@ -18,12 +18,27 @@ interface RiderAttributes { interface RiderCreationAttributes extends Optional {} -class Rider extends Model { +class Rider + extends Model + implements RiderAttributes +{ + public id!: string; + public name!: string; + public email!: string; + public phone!: string; + public password!: string; + public refreshToken?: string; + public createdAt!: Date; + public updatedAt!: Date; + public loginAt?: Date; + + // Compare encrypted password with a provided password public async comparePassword(password: string): Promise { - return bcrypt.compare(password, this.dataValues.password); + return bcrypt.compare(password, this.password); } } +// Initialize the Rider model with attributes and table configuration Rider.init( { id: { @@ -72,15 +87,13 @@ Rider.init( { sequelize, tableName: 'riders', + timestamps: true, hooks: { + // Encrypt the password before saving a new rider to the database beforeCreate: async (rider) => { - rider.dataValues.password = await bcrypt.hash( - rider.dataValues.password, - saltRounds - ); + rider.password = await bcrypt.hash(rider.password, saltRounds); } - }, - timestamps: true + } } ); diff --git a/apps/api/src/mqtt-listener.ts b/apps/api/src/mqtt-listener.ts index 52e3386..883e1d1 100644 --- a/apps/api/src/mqtt-listener.ts +++ b/apps/api/src/mqtt-listener.ts @@ -1,6 +1,6 @@ import jwt from 'jsonwebtoken'; import mqtt from 'mqtt'; -import Driver from './models/driver'; +import { Driver } from './models'; import logger from './utils/logger'; process.on('uncaughtException', (error) => { @@ -13,7 +13,7 @@ process.on('unhandledRejection', (reason, promise) => { process.exit(1); }); -const MQTT_BROKER_URL = process.env.MQTT_BROKER_URL || 'mqtt://192.168.68.106:1883'; +const MQTT_BROKER_URL = process.env.MQTT_BROKER_URL || 'mqtt://mqtt:1883'; const ACCESS_TOKEN_SECRET = process.env.ACCESS_TOKEN_SECRET || 'access-secret'; const mqttClient = mqtt.connect(MQTT_BROKER_URL, { @@ -57,7 +57,7 @@ mqttClient.on('message', async (topic, message) => { try { const driverAccessToken = topic.split('/')[2]; const decoded = jwt.verify(driverAccessToken, ACCESS_TOKEN_SECRET) as { - driverId: string; + userId: string; }; const payload = JSON.parse(message.toString()); diff --git a/apps/api/src/ride-request-processor.ts b/apps/api/src/ride-request-processor.ts index 02c1464..1cb68ea 100644 --- a/apps/api/src/ride-request-processor.ts +++ b/apps/api/src/ride-request-processor.ts @@ -13,7 +13,7 @@ const redisConfig = { }; const mqttConfig = { - host: 'mqtt://192.168.68.106:1883', + host: 'mqtt://mqtt:1883', options: { clientId: process.env.MQTT_CLIENT_ID || 'ride-request-processor', username: process.env.MQTT_USERNAME, @@ -47,7 +47,14 @@ interface RideRequestData { } const processRideRequest = async (job: Job) => { - const { id, riderId, pickupLocation, dropOffLocation, pickupAddress, dropOffAddress } = job.data; + const { + id, + riderId, + pickupLocation, + dropOffLocation, + pickupAddress, + dropOffAddress + } = job.data; logger.info(`data json: ${JSON.stringify(job.data)}`); const rideRequest = { @@ -65,7 +72,7 @@ const processRideRequest = async (job: Job) => { const drivers = await findNearbyDrivers( pickupLocation.coordinates[0], pickupLocation.coordinates[1], - 100000 + 50000 ); logger.info(`Found ${drivers.length} drivers near the pickup location.`); @@ -73,21 +80,26 @@ const processRideRequest = async (job: Job) => { logger.info(`Ride request details: ${message}`); logger.info(`Drivers: ${drivers.map((driver) => driver.id).join(', ')}`); - drivers.forEach(async (driver) => { - logger.info(`Found driver ${driver.id} near the pickup location.`); - const rideData = await transformRideData(driver, rideRequest); - mqttClient.publish( - `/drivers/${driver.id}/ride-request`, - JSON.stringify(rideData), - (error) => { - if (error) { - console.error('Failed to send ride request through MQTT:', error); - } else { - console.log(`Ride request ${id} sent to drivers.`); + await Promise.all( + drivers.map(async (driver) => { + logger.info(`Sending to driver ${driver.id}`); + const rideData = await transformRideData(driver, rideRequest); + mqttClient.publish( + `/drivers/${driver.id}/ride-request`, + JSON.stringify(rideData), + (error) => { + if (error) { + logger.error( + `Failed to send ride request to driver ${driver.id}:`, + error + ); + } else { + logger.info(`Ride request ${id} sent to driver ${driver.id}.`); + } } - } - ); - }); + ); + }) + ); }; const rideRequestWorker = new Worker( diff --git a/apps/api/src/routes/driver-routes.ts b/apps/api/src/routes/driver-routes.ts index eafdff8..9d52d38 100644 --- a/apps/api/src/routes/driver-routes.ts +++ b/apps/api/src/routes/driver-routes.ts @@ -3,6 +3,7 @@ import Router from '@koa/router'; import { acceptRideRequest, completeRideRequest, + getRideRequests, loginDriver, pickUpRideRequest, registerDriver, @@ -17,5 +18,6 @@ router.post('/acceptRequest', authenticateToken, acceptRideRequest); router.post('/startRequest', authenticateToken, startRideRequest); router.post('/pickUpRequest', authenticateToken, pickUpRideRequest); router.post('/completeRequest', authenticateToken, completeRideRequest); +router.get('/rideRequests', authenticateToken, getRideRequests); export default router; diff --git a/apps/api/src/services/queue-service.ts b/apps/api/src/services/queue-service.ts index bea206e..a0c0e46 100644 --- a/apps/api/src/services/queue-service.ts +++ b/apps/api/src/services/queue-service.ts @@ -1,5 +1,5 @@ import { Queue } from 'bullmq'; -import RideRequest from '../models/ride-request'; +import { RideRequest } from '../models'; class QueueService { private rideRequestQueue: Queue; diff --git a/apps/api/src/utils/nearby-drivers.ts b/apps/api/src/utils/nearby-drivers.ts index 93065cc..1276303 100644 --- a/apps/api/src/utils/nearby-drivers.ts +++ b/apps/api/src/utils/nearby-drivers.ts @@ -1,6 +1,5 @@ -import { Op } from 'sequelize'; -import sequelize from '../config/database'; -import Driver from '../models/driver'; +import { Op, Sequelize } from 'sequelize'; +import { Driver } from '../models'; import logger from './logger'; export const findNearbyDrivers = async ( @@ -9,42 +8,58 @@ export const findNearbyDrivers = async ( radiusInMeters: number ) => { logger.info(`Finding drivers near location: ${longitude}, ${latitude}`); - const drivers = await Driver.findAll({ - where: { - location: { - [Op.ne]: null, + + const twoMinutesAgo = new Date(Date.now() - 2 * 60 * 1000); // Only consider drivers updated within the last 2 minutes + + try { + const drivers = await Driver.findAll({ + where: { + lastLocationUpdatedAt: { [Op.gte]: twoMinutesAgo }, + isAvailable: true, + [Op.and]: [ + Sequelize.where( + Sequelize.literal(` + ST_DWithin( + location, + ST_SetSRID(ST_MakePoint(:longitude, :latitude), 4326)::geography, + :radiusInMeters + ) + `), + true + ), + Sequelize.literal(` + NOT EXISTS ( + SELECT 1 + FROM "ride_requests" AS "RideRequest" + WHERE "RideRequest"."driverId" = "Driver"."id" + AND "RideRequest"."status" != 'dropped-off' + ) + `) + ] }, - // isAvailable: true, - [Op.and]: sequelize.where( - sequelize.literal( - `ST_DWithin( - location, - ST_SetSRID(ST_MakePoint(:longitude, :latitude), 4326)::geography, - :radiusInMeters - )` - ), - true - ), - }, - order: [ - [ - sequelize.literal( - `ST_Distance( - location, - ST_SetSRID(ST_MakePoint(:longitude, :latitude), 4326)::geography - )` - ), - 'ASC', + order: [ + [ + Sequelize.literal(` + ST_Distance( + location, + ST_SetSRID(ST_MakePoint(:longitude, :latitude), 4326)::geography + ) + `), + 'ASC' + ] ], - ], - limit: 10, - // Use 'replacements' or 'bind' for parameter binding - replacements: { - longitude, - latitude, - radiusInMeters, - }, - }); + limit: 100, + replacements: { longitude, latitude, radiusInMeters } + }); + + logger.info(`Total drivers found: ${drivers.length}`); + drivers.forEach((driver) => { + logger.info(`Driver ID: ${driver.id}, Location: ${driver.location}`); + }); - return drivers; + return drivers; + } catch (error) { + logger.error('Error finding nearby drivers:', error); + throw error; + } }; diff --git a/apps/api/src/utils/ride-data-transformer.ts b/apps/api/src/utils/ride-data-transformer.ts index b866ccb..1aee8ed 100644 --- a/apps/api/src/utils/ride-data-transformer.ts +++ b/apps/api/src/utils/ride-data-transformer.ts @@ -1,7 +1,6 @@ import mapbox from '@mapbox/mapbox-sdk'; import Directions from '@mapbox/mapbox-sdk/services/directions'; -import Driver from '../models/driver'; -import RideRequest from '../models/ride-request'; +import { Driver, RideRequest, Rider } from '../models'; import logger from './logger'; /** @@ -29,7 +28,7 @@ export async function transformRideData( } // Extract coordinates - const driverCoordinates = driver.location.coordinates; // [longitude, latitude] + const driverCoordinates = driver.location?.coordinates; // [longitude, latitude] const pickupCoordinates = rideRequest.pickupLocation.coordinates; // [longitude, latitude] const dropOffCoordinates = rideRequest.dropOffLocation.coordinates; // [longitude, latitude] @@ -45,23 +44,51 @@ export async function transformRideData( const directionsService = Directions(mapboxClient); // Calculate route from driver to pickup location - const pickupRoute = await getRoute( - directionsService, - driverCoordinates, - pickupCoordinates - ); + let pickupRoute = null; + if (rideRequest.status != 'dropped-off') { + // Calculate route from pickup to drop-off location + pickupRoute = await getRoute( + directionsService, + driverCoordinates, + pickupCoordinates + ); + } else { + pickupRoute = { + distance: 0, + duration: 0 + }; + } - // Calculate route from pickup to drop-off location - const tripRoute = await getRoute( - directionsService, - pickupCoordinates, - dropOffCoordinates - ); + let tripRoute = null; + if (rideRequest.status != 'dropped-off') { + // Calculate route from pickup to drop-off location + if (rideRequest.status === 'picked-up') { + tripRoute = await getRoute( + directionsService, + driverCoordinates, + dropOffCoordinates + ); + } else { + tripRoute = await getRoute( + directionsService, + pickupCoordinates, + dropOffCoordinates + ); + } + } else { + tripRoute = { + distance: 0, + duration: 0 + }; + } + + const rider = await Rider.findOne({ where: { id: rideRequest.riderId } }); + const price = Math.floor(tripRoute.distance / 1000) * 30; // Prepare display data const displayData = { rideRequestId: rideRequest.id, - estimatedPrice: Math.floor(tripRoute.distance / 1000) * 30, // Use rideRequest.estimatedPrice if available + estimatedPrice: price <= 100 ? 100 : price, // Use rideRequest.estimatedPrice if available pickupTimeDistance: { distance: formatDistance(pickupRoute.distance), time: formatTime(pickupRoute.duration) @@ -79,7 +106,9 @@ export async function transformRideData( latitude: dropOffCoordinates[1], longitude: dropOffCoordinates[0], address: rideRequest.dropOffAddress - } + }, + status: rideRequest.status, + riderName: rider?.dataValues.name }; return displayData; @@ -103,7 +132,10 @@ async function getRoute( const response = await directionsService .getDirections({ profile: 'driving', - waypoints: [{ coordinates: origin }, { coordinates: destination }], + waypoints: [ + { coordinates: origin as [number, number] }, + { coordinates: destination as [number, number] } + ], geometries: 'geojson', overview: 'simplified' }) diff --git a/apps/driver-app/.env b/apps/driver-app/.env index bf55a65..1435c0d 100644 --- a/apps/driver-app/.env +++ b/apps/driver-app/.env @@ -1,6 +1,6 @@ -EXPO_PUBLIC_MORRO_API_BASE_URL=http://192.168.68.106:3000 +EXPO_PUBLIC_MORRO_API_BASE_URL=http://chriscoder.tplinkdns.com:3000 EXPO_PUBLIC_MAPBOX_ACCESS_TOKEN=sk.eyJ1IjoiY2dvbWV6bWVuZGV6IiwiYSI6ImNtMndhbDAwZjAzMXQyanNkMHF2NjR3bmUifQ.f6E28fydW9bkhLBP7L_lCQ -EXPO_PUBLIC_MQTT_BROKER_URL=192.168.68.106 +EXPO_PUBLIC_MQTT_BROKER_URL=chriscoder.tplinkdns.com EXPO_PUBLIC_MQTT_PORT=8883 EXPO_PUBLIC_MQTT_TOPIC_RIDE_REQUESTS_BASE=/drivers/:driver_id/ride-request EXPO_PUBLIC_MQTT_TOPIC_DRIVER_LOCATION_BASE=/drivers/:driver_id/location \ No newline at end of file diff --git a/apps/driver-app/app.json b/apps/driver-app/app.json index e116fa2..ffbe234 100644 --- a/apps/driver-app/app.json +++ b/apps/driver-app/app.json @@ -5,7 +5,7 @@ "bundleidentifier": "com.chriscoder.driverapp", "version": "1.0.0", "orientation": "portrait", - "icon": "./assets/images/icon.png", + "icon": "./assets/images/app-icon.png", "scheme": "myapp", "userInterfaceStyle": "automatic", "associatedDomains": [ @@ -29,7 +29,7 @@ }, "android": { "adaptiveIcon": { - "foregroundImage": "./assets/images/adaptive-icon.png", + "foregroundImage": "./assets/images/app-icon.png", "backgroundColor": "#ffffff" }, "package": "com.chriscoder.driverapp" diff --git a/apps/driver-app/app/_layout.tsx b/apps/driver-app/app/_layout.tsx index 04b606c..25f59bc 100644 --- a/apps/driver-app/app/_layout.tsx +++ b/apps/driver-app/app/_layout.tsx @@ -18,7 +18,6 @@ import { PersistGate } from 'redux-persist/integration/react'; const queryClient = new QueryClient(); const MAPBOX_ACCESS_TOKEN = config.MAPBOX_ACCESS_TOKEN; -console.log('Mapbox Access Token:', MAPBOX_ACCESS_TOKEN); Mapbox.setAccessToken(MAPBOX_ACCESS_TOKEN || ''); diff --git a/apps/driver-app/app/main.tsx b/apps/driver-app/app/main.tsx index 4f646d1..7ca27bb 100644 --- a/apps/driver-app/app/main.tsx +++ b/apps/driver-app/app/main.tsx @@ -1,24 +1,21 @@ import MapView from '@/src/components/map-view'; +import PermissionBlocker from '@/src/components/permission-blocker'; import RideRequestDashboard from '@/src/components/ride-request-dashboard'; +import StatusCard from '@/src/components/status-card'; import useForegroundLocation from '@/src/hooks/use-foreground-location'; -import useNotificationPermissions from '@/src/hooks/use-notifications-permissions'; -import { useEffect } from 'react'; import { View } from 'react-native'; export default function Map() { // useBackgroundLocation(); // TODO: Implement useBackgroundLocation hook useForegroundLocation(); - const notification = useNotificationPermissions(); - - useEffect(() => { - notification.requestPermissions(); - }, []); - return ( - - + + + + + ); } diff --git a/apps/driver-app/assets/images/app-icon.jpg b/apps/driver-app/assets/images/app-icon.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0bea28043894b6637d13486c4fc42278fedbbf4f GIT binary patch literal 141726 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�q@y>fS{V2N0Az{oQq5Bzx3Irl0JrT%U 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%0A{8?E^ZN@ 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 gB2akMTY()lJqqw*{^nbKJv4=cc7 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%0DY{b!S>Va9j%%?m{{Y2UxUVj=AByjc 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 literal 0 HcmV?d00001 diff --git a/apps/driver-app/ios/driverapp.xcodeproj/xcshareddata/xcschemes/driverapp.xcscheme b/apps/driver-app/ios/driverapp.xcodeproj/xcshareddata/xcschemes/driverapp.xcscheme index aaf0bbb..83b95fa 100644 --- a/apps/driver-app/ios/driverapp.xcodeproj/xcshareddata/xcschemes/driverapp.xcscheme +++ b/apps/driver-app/ios/driverapp.xcodeproj/xcshareddata/xcschemes/driverapp.xcscheme @@ -42,8 +42,8 @@ 057WmX#gU^fAU|6_@5vn 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�q@y>fS{V2N0Az{oQq5Bzx3Irl0JrT%U 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%0A{8?E^ZN@ zTJLJ*y$A3M_?v5&Q#qFmbmpI;?dxZ{!ww4vn^xW(uuBQ{*&Z(^>3Q?sQ zJ(7%NC+OU_euvo|Cxwi7nw7ic()(0`-b@ZjMN7yYE-=Bm}2!I&0v<0|L6iJ5i?0l9l{t*6T0SFShXAIDRP z{vi09SHq9OW5ecW#SKpP7FN}{mKF5!%p+zEaKc*@hW`LIyQwhr4qT1Fzl4_lwZ;`-&!a{`t-y!nv-Flku~~rZ*9(H9nN#o(`d()Uu2-v;4`d z=nf*k%EME4{50wT(3QxVM=H=9Fw*!<5yNdCmgKoc0+^?P%W}LMF!U%i4Vg`VG<_Cq zUaH4d{35gtfLUsc!!n_Xs^src{i>4olKg$&^uIQD^l;Uptx5_f#nSLq!wk-YPZjl! ztk#t#UUTh9R-G3fzxI45$)pFDDPL8Pa6iNLjKVhor+8(ju#}nmEoK6nkJZ4ERxCzu zTB-i?5aU1MT6bf>-NgBlx{8?EZCS-z{&ZU(V!~r3ysFF6=h8bQ;qw{t+oy8S*syK} zoxk#}EqyD)s@Hy%%M9=T0ApbOOJzB)FYgsU+T?!m9_!|wGYu~FauMjld5&r-UM~}(NO6=Bd=c)eJ5o5CX<%+^R{hWRX z=Zzd>c~qCh{^eHTcMe^4WmT9@T3E`1`K=BsgZdt@B91dOqd)g}^ZdbDr)LI#Z9}tz zzdzKkiluxb-`TH%K8P%Qc~zIin@w&9Xxfrpo#!9_0D9m503m4co*npoi)n3q`#m6t zA-RZcy_&v&=FV}BY4j@_vz}YI@#mO=*eyuQeb$2y`?pJj~J=8Lag$lJT+?<*|N|flq@m7*g z#>n7zd_TA~Ma1B^iNy>(qA77ZGI##~UZa*X;BQOdd7YDZi{kzWk^7qDRe|YS4*vkU z?0yr3+N%+Kc4vj4I)?K&t;Y?)%pe2x?DD-!TvMhS`O5pLVl{{{Vx8PD!dUhA?`28&m!qGl%9E&2f)_+*{(W z3pFN$%J^h62WI&eF9}Nro7H6;J!jOS=CQR4jhI|S`7VCN@sC8|$rSS^);*}<-s$@- z6<#^yZN3vK#k%$`Yg_!+1sof9Mk@^JMx95~YeRlprOhppVlU*pkm9a@_;m0q zKg_&84-ULy%QY5|#y>C2D(g*kgv(ort4+t6ugRr@sm)HMp4Tz(THrxm;&8XcW^b(c zQIP6f9-F5__1wL+1uFH+$Y~}n&;-B--E8`|Q`OZN-|Z~RC(EB-_i8@`%7hNUyb`uX zgzZkZXLW1gAw|`rDK_E7!^1vJr)PBSYd-C~ek{vLW*UM~o+8k3**<%BHFL`U0EBmd zE)00H;~ul(7Z&_Ew;#gXpCYG($m-*<_~C}eXAi^&JX5M&P1uu4gGh6m_yMTUM3v}f z1L05b&dF*6h45veo_f0zgR5KX^C}hfINd?1F$6Watx(3dm5gWMYe!%P-pfjJ9M#10 z;;I=F1>~-uR`!{xbv|!AWh&F5O{A4L)RmG--7R+cw`6x2W{SaJaIvR5O|HBu?7Rnn zuK>9~4Z(Op;k6((oiRb*{a{w_gYd23*C}v*2g64Ws5ouQq_9@{(_1O8jeqUecdV5! zW+DFowNR`gzIUEh`gp33@5%nBZ5=&>ha|oS+hBNg;qxMo?5-N=EFo^+s^nN&asL2@ zn%!{u{)WmLDdn_q^hAEn9gSfB0LlX6BSy9V03X?7d$IUBZ?A!+Lak=B{H9|0g(B#% zcQ4}Qo#N}MsO#b-{7S9)wtY~_C`EPjIWrxr@{Doh7=M`?2Lkw8PGye9)}m@)GCWzN z(KQ`U4(J1~MaNh^Ja~-A&+6D-4RG?fZG~JmrOYUwSbi1Xn%r7 z9jWp4E$A??co9NBGnFg<`YOli5?KR2#g3Qe$om4;ejQWE-n@P_6 z;cLHNKlhOxl)D}e?P7lFJ+y7m_uMu z)uMiZVSZ(Yo>yYWq^w6DMyZNb9`o6)C0EOlKiTTS7LE(6A)-nYu?{N0@q`)xM~!h%v)Z@xxBSG z<+dU>v~IeQ#Lob~42%|Sj>hVp8>RAU^#xo`K9(a{I}Ye*=c!T6b|;(wCB*Eq{Vh)| z#Nu3W-rI+wqXgUUyL`S6(CPDB9ajYDxVQZBX)i;c_-pZa@HfWIM~BheJn)i3i*sfn97N(xI)C2zj!-TGsaHHcZ;G>G1I^qWsH0EWh z*@fZ8Q%g0@@R;2>^08Q)zO7c#W-AL!)jv6(IqarEEiEr;AOkCB&ptJLBGWt@$MNSM z;aiLJwEkV0;IJ61Ml%bR(fLotQFUA`dV!dlj-x`SFCeP+fE?zFlM9mv+2?8)iOMj+ zR8B2L@iiMcB+~bq=+X1m&h*VRo2?gg-pRd}K1rSUqr@FWK-&-<<+|K(JXFn^d2u*K zJRX2AF*1*jo|e{J1L6-AICtS|F|Vk&f0*TC8Kp7Wq*ncFEXGu;McI`)xO_P-rADc4}22+@E{e&z~cztEjZJt!ZBU(Pyc; z{{SrD_Z+m9eF4TU9%Xs%PmE!1BP`Cc>UgX(fwkFC5D)l-5zwzHekEU{(UN2t4q?YX zhr97L8-!!=S&s~Hc&B0wN@MX8mezSM<^o8=R4(R-W9Arke-u9)PZWF_&-Bk9I75ix z-l^brvc%QE;40!W8rXc(Ak2P1FU#{et<6UlhpOUU(B4|KsX5F)i}3N=KS(p;d!=r&gseokG1gQ^gSKFQxd!M#~)1($YhM&UC(&?PpBa zjwcCHmAT3erIWWcC2L)BZEm_VrpDv+);d1UTwf2x9)8lPTAQ6i6GEdZF~zT^QH8E! zfr1D(1Q0<6;DQ!H_z-$|E%S{YBgcy#A!gnpb1e&#>8$5H%)k3$%JL_?VJc%yK4)U7 zGNCS~^FSr-k~!MvPvc)W%HpV&pGE4t1|qH}3klVa4D7g-?`Lh*`uIMm*LaFhqglo- z>!a^o4E)EkVbgH22MbBD>YVjAUunT(Aaq$WOz-zlA3o@qu|h4l%Y>X3r~q)7h&sz87?x&e|=%ml(taTW(;y$XvJZK0BpFcEI)T%YQssLAR| zl6oV|sd0PEwK4S#tnjd#NV(PDF3$RFfuDfOgkd-eydzbjHdEkVGYc z%p$^NJ-T#AZDb2ren@eYJue9pKju?CzN%*S2mqNA-6@acf@J#l2^-iH1D6wPr9NkL z8;c;`(Z1*aUvx+GK;HiVboRXcPy}@PBg@aSCQJeDkaVfGz%8;@2K~Axzv2lUpbM*! zxQ@sqjge`PVFn07Nxi|^5osX$U!pd8z9gWsog zxw@c`E##|UGH)m7pxWu4$q*(&h5~z{=<0%?2*@dcJETe7C_hkucj$f4TtDcOh_(ID zWZOOLKCFl7nW+`l&#{QSD>NC#u_Xy<4aB&KzSk9&Jwt zMaC(}=6yr_EMU8jqU8So3mz7@x8qmD9-i>m!7K$Tnf9Z_xq}spYrj^@u*@9Q@tA_! ziZq!nF?SNyHeBEr=>GuW{qRWeFW?VM;c;4ThFN~G*Dj*p?S3O`47QdlF~rr~-yl3W zm?~2|w5WjsIh^-Pj|FP2Y>r4pb7$sv!_SK!06GI%QO5Y2;8zm0z7Ca1I2@lp!(}u} zXZD=J4QhfvbX2E3*Sg;d?-{=eUl4j=F`?}mLDa;VB`EaTgR`*nX&kp@mazT1^f-oxcSD+>G*uBENf}u z@R(+YVzWG3=jCBA>?Cv5c?Zd@4tt1eO7jDS8VAOw=?L+9w-q?^s&RZj;0Bw`jVuO7 zl~i%2`mNrE5IjaN6a)&mx}dg^bTzXKTu<>9ZGQC1{{*`?< zlSiBr{imHhvjhgys2EPvs5khG`$fXu9_Wq&aHk;PzYB7v&bAPqIxdhQ!VaS++7fONl4*dT+TuuK8Zv?z(S;;ptCSW|bos zY&9oszP!I<=)61dYs3Elgiae__)Fo_hIww9$|yCau)))s_}ZXH&cxPtmRXNFTA=YM6dtAxpN%rM4g*`viF1k@q4X?cD+rL**0l>T{L+7WO5ekadXI7~j$ zfAjS9H7?W-CIOS=ig~6YyM;OpbKHM*jgr34LE!v6<~RY4!{&IL=DQjVdQ>qK>av;h z6p6Q)TjgFO=?y;LlchAJDoh`;=2B?;?z_n3lBE?aULr8RMR`l`+wnR%=MbFSFxYuX zuCCEvujG7QRibt7bOW%N1$Hst`^-T3WB&j({>$jH-U;dlfc)D%!%!VrNEe^2g2j*H zHloEiwvHa1FEZ(cvg7!Ht1)1;`QxdM)S3dVvOGUNI*-Q5ejmBPC!W{(JT%wE{wLjF z_(h~JKtC|dF<62(=BgMz%U@3_;m$=4{Zjza2klpTT<@!j;v80Unc~6yYdFN!o%yQn zv^5)to@dbyJ=|tgtoH+l{{W+hiu2#|IR5~#G1dP7>tY-7{{ZCX+(#3*f0Qx~b%kgf zGJv133u?yrfYCH1xLiIv5=Z^s5P*Hk;xSxP5l)jE{{RbCI+)so$*O*;v(@}QB!wq2vEym!Rn8qdmB*NfxEudO2slx6s7*tzbgN94HnrZ%Y- zd047q-9L%O{g+=?RA#k#)%aO{hhs-gWwieQ!@rwn+G6;*udz0Eplu&4J{gVtlHdNUFPVNcGw|+vN>u9NaRd9R6&)M$FuU?!6!UCdU!_t{)t!wz zqXkQN(~9&)?N=De?=Hlb)g=DaSC>!JsctHTA^0egX z+^?^hV`<@-)7zS(nit7u-YED1ru05{#LU}`8dz!FH}XH)9P);FM!pvR?5!5=-%Xb@mQlk|Ui{-9Hj&B>%w)uSpk^h)01~>r zk$hEr66Dg0(wci6jCKPprBRgXVxE3WS}C>F876;uapt`E z)9?!c;ZGIf&xJY*RBC*pp1y96z~z-GQ^4Z!*^lZ+8&uP#=Tvy1N{1_-P`7%G5xE&& zU)k2Y$JUCameuB$y%!rd%I;RS+wOcdvz&tu8`Q+ZmHDUnTn&>%C*~A>${C43?jT+;&%{I5&vkQ?-_5uk)=KGhCLI zDxMYiinKpn1)$aD`Ey z>{WU+a2Q4x;_=n1wUlTyZeLK4)`8TLA$%sV@g?DJhxDjc*B&Ogb(FUh(s2I(uWL*T zO;9)G0;wiF7eV|wcp1>16#N2l*T)uV;#P+g{5k9H7gf_)K9Z|P9g$|)?sWXm4MvOc zIC{>g%oR*FDV1T&sZsA^Nsd<#c%Oy84F3R!mMh@V#Sb6+K;pJ9BiC5nSzk|Z?zW=B znmA0mAA_pe!v}<+gD(AcrYe^;ADdJ~JDyf@7aY3<@@>LYsXv_NGjUGKh6!J989OxY zxih4%+IA@=?6C1o_qP84M0x?5{8hdh`6X9Suj2mzOX8l&rkk0SQN`mN2;cqH7hBI| z#rosp?eNyo*owFu2Bp?n-DYzNf7#kW^qEwT;dUkT=6x4HxU-=+ZQiJU*u& z59RzTCc}K5G&UYz-YZt0K5~p!-1$TGI?BDJXY*gfj3emZ>ULK@{Ud)43}JqU@X@XF zFU9`=?HtbqgOT1EY8CUiztSQZh)no@bATQqyAG}fTc#ZJB+ko~gwo<MTZmjMDjTKZ@Kc);PAjVDnr%ne(aQT~+kRp^E|h)JwV8*KE#i zR{iU;j>fPNUpj zzDn%ZJFT7Ss+8M=!gIEpDswzBwM*Xiww*Rh>NtSVZyT;x@Y(TgM_lMH6TTC8Bg5Yh zddCk(6zyB4G5VJgn_+VNZ_leun2f*X3{Nc@xJtaHgWTgu?RP8(0zSWw9|-Ot_>SWS zJ2Y>IthXxD7!iQN;`Ekdk=Mu3npk1WU4@mYHPs@c$mRe7e8^ayD<$kFFVEa+IugUW zcecEQaD0Eu28Gfe0WH<#rYjWLndp@z#d$6(!1)5lhz_P^xfoZ6g@ zeKKS zJOUcw1B`rfaf`(sQ^j5{;&m5|O-H6Mxjz!Ic@|le=b4^qfy=O1dYF26%q<)pTmxL! z;u%VzYuQ(p%xl4aJ-uA5;NQYlD~lP|9rG^_nqL{Lbrvbuoa;Z#GVj)F;%m4=s*zN= zjdO2?1A!ZXI77&xJlXW5?%ay-{g=scrKX+1>zvpH^Cj@FbgcseyPwQvU#){4YZ zdBVE8oYuOf5&J|q4{B&P4Ti(B35KTHRA~sMMw@w9!TuJD4`q~MIa|onU?K&r*?jf> zQu%}^s(3uMoGh((Cj8x!kLR(=PqQjAo0V)#rGF3Iv(6n&@O{@AKg8CbiY^TB1A}bg z7FGJ5BO>9Ru*KKJVIC>qn@O~5;b^qYN>x9+CC_y?)Tbwzu3Wj{OW}_12i_#{z9hI$ zLoLj+-ADTKHJyD~i>F5eUk!_@E7!wi*bEjJj1x=4Scu7Ut zOI1{;{ZmIY$5h2)vwn64a$+$KijQMj0ApkZM7AAu_d0AiYfVn``}q7RFhBkhkp4@1 zE;Dnw#xow(wcTp-ZyP1X<0oq^(pGyeoetKHj??twm#|LC+waer^4b%_*N46sW;sT0 zp*TmDW%$g4NV7|1xVAo{s^Icwzvh0V*B48vm;NVna~B=S7FyjU!Osu+13PY|(A)#j znLcGr?sYuFEYmnz6{)$?%v$y^IfTicQa3AmaT1`rq^^ptyVbahx|r&&`#*W^zvDjm zX{?GCwjMipBQ;D0hkjUcYP>JfRWOdmoMW){w4Mp{-HAKbEp;N-R6SlnaqhPqKC{H- z)#>6g{F5V~>NJHqC7O2!{o4S5*8c!^U@j&2K7sfAxy<5YY+IJ^rcb4F)XL?f;fyroL>Qc<`taU~J>P%^h ztPi5$u@yXm{P=0y*Y)f>D+vvILx3XUdN0$ZC)4@OHChWp+sqEcP5#UCUB@jH&KCHL z*W5OvPm-QTtus6o7Ivo0T|m$LysOrqCXG*+X0$Q+elD!4IJne{le=73jJJMK^}l(k zdr--+mj;?h=IZogAPAKg%OuC(;(3lLUN=^L+78lcSA2~4^-SeoGm4$6bf zZh)?7x<$w7x}IQ7fJNd*+#mu<36m*E>ViSAC<1R1f==M6Bz=6)WC3&q6XoWScSut) zu|ag19Ti*Liy(3HQca+t#2@CQx_aCqV#x%c8%joG5E26LtVv#ErR(=Zjgcq)byc&t z0$`-$J0PCETO{jQEUpAfH@OJ1H{2<(0|iMvf0|_XQcpk>+Q12&)SD;hQrtoTIK`n! z**6on(Mz@{I-JA|h=geI0&ip0BlSl~JETgR zpatH3i4)RLOc+w)cT1pAGi0RCY6~Eh#pDIbwCI)AV&Ly3v3YkxDnj~=6enLC43*q@mi~m9D2p! zTI|CCLn_mmePS<8l~Y$2hy(s2%sl@9z!$ZTaRdOocl{C#SC-b${BhAI5YddGsB&z; zQYP-DQwv^?H?ydb?!AY6?n3ya?>)|Gaw(*dC3)@oPM#4mPZWO%&2_2UmA0;-;b^C< zbp9o@fqgdNk1jHt?i&0f>&V!aFp>B|^dW}OxI^M=o8*}v!<&yeo}#Tym^xe>)W1E| z3n0{rw%rmsGD;Zbk-z=S#l}DYoSFlCf^hJ2=Mc+;rg? zx^y9KIoj^;lw!O3zV5vf?KMt$gUBeVl_SMB^dr-5a(*2V!x?{uUOHx=VrprM7+~=+ zjm)XB!_*0duRaxc+QA>$`B@`iGe-XaMYC)F0E!N%(ix>pK2hLLikPee97Qa4Cj&~C z&1gTgDX_e>5qKthua6or8(Abzm7kW ziL0mDj&$Yjs%d{q{m;0?cx2<1F>N)6sT=&f%9;GgU48NG!rzHDo#4(dP54FdnVM@2 zMW`_NjK02OgwOCeagtD}Pm$P`iq+U^RxNXzObayrBd`aVGCz&~0E4_^#Vqd!s`AHv z^Kn@;f&T!7%jbK3(`XNX-tOgm=Rd#R87%?s;tKNKDwH76_d{{S8IwSIru6!XeJpR0oA z*IkQXwZ?SwJXR{CC&L(|lw4w?+?u~Tx4$;Z>HTk8Ai*p(Dln2wySCGJ?|1a%b(b96 zep=$p%PYoVT{jq$L#pCe}!r=)B;YlV4782G7x$@L}`n4F_4s?26L301RC680Wyblx^C<_&QNc!h`Q+_J8Hp5e0G zKhmo>#{JiOzeRRmHpjds5~X?V2qyepzjknI{3`rOz94yXbB-KwR}10ihPc2#vo#)X zrw%_?XIOGAUWN(pWh|iU@Yq=d$mC@cWgD1yZR`K^*<(?3{YUh|-R;JBJ!)Tp-Qj;h@G{i^Y zz~h5qhP%LuRoWZ#96262oYxkWE!@YMcoT5fAV{ig#9&X0vJiXRi6JNR|2e02D&_=(~4UX$S7 zFAIjwG)7&f@OV7C9@b^-s_b@WiI1DfUZ*$Vr}&G*!+B+`T~zp0@Pp!0@l)6O_f%+K ziT1M4nTC|cU@;Znjm`5+T`KIy*2DqwsZ*{SOf%%!ju8$5z%L+Au&l{T74y8tl_=rV zc%{QP8_Byy_FJv5Yukw%No$-p4L@f_QgXiAbW4Bv+~BxJXRks&UFbY}PEpLL^5waHr_XX) zxO_WkI;JRo7Eq)5+snxfe=BK+{vKo8WxpqE6mgVjW|@O;hH|XwCBsQ1oEwz7NpHGd zTOT$jUDa@$@YGUQN<2?_H_v6==6Wl{KN@}-^aqFCL*j~$6ENDRM(K~0{jr&7PF(2F z=XExT7vwUW8pXE4wHWid9 z)Td02R#$yaXF8ze9I#;AE{x_}LgKf;OMtn5f?hCiS4i<6G2-T(%{4}*!qv}fHvyOa zvLBWVygHLV?Oe2|e8<$5{yL$ovpL<${wKUE@T1@p;lDlOZ-j0o>Wn_S;`z&Trc;^f z+L$~^$gpC8$Ky^IvXwAv7gMIzReMh?h-}?=SYE@lMjtQs6RA42u``r#wK%=mMI`u~ zV62pPZM~ky9bILb%Cu)2MlgzXBW=^}P4nn-Z^QTF7~hCDk30v1tt;WT8>jM|V{>Y? zbzUn!6|3PW;Hf?T05Yx^QEONnTGkQsKMSe>b@3Xj;?d(HP5ef3?*$o`gxxtu4O@vg zO+QkWUya3P8J<5b#9~<5cTBEUMl^4}@2Rr6NOf*;z zxAEtokHlZaFAO|5{5Sq3xn^sK!RUM*p3d@JL$0$-o%!B#N9R|>W;EYUhsn$y_H!Da zEb}zd&lEvt5U~ zMJ6?s@f94>9`C>!BcksXuQ947N;h@ij-p8mn-jkw{~#<0Ag!A zeF)U3sy;bcrrNciJ6~jQ)~wP#4SYb?@bmCNbOk3HV447v2eY+pP7!5%QgLmT0`2Cezs- z28LCfW-P4g*^Nv^15iGXHV5z%S>u(?Eof-xE4O@n_+a>B1Wss z?=#6VtW_4}xt3*wdmhY9MmmvuT=!C@YKFK9g{0WH&(Zj{@B`sr#{U2wfAx{^7of8o z%T-j%C}1&otglhxa{4&B6nTX<)ulnr<{&t?m=H@q1dsyizxwIf&H|h$QTC3UuQ@2w zUtI6S)w$`r8FwhX4$04cOdfY$+Au)Tf0rINV zb7jwaDn6TuCghUCE9z8`5++q7M z%RP_rYe}}3D=%KB1o-ywJ;R?HUI6$n;YWvgHV1|n-W629*2|lS%EmtpgQjo>hBFS) zLF1k7szpzkKZ(sQahELINANGDc)jq{(mxG-O|3Ecc2%S)Wp2Z2+?y|@O1*qe4fS91 zP8GzmDjL-}fq61{rdK-(j^5s3P&Tm;uq=0OJ)mP&#nz(=w{A_^lbZtG>34k=fDGx_*jWIB0UV={>z} zd^TO-Tf+uhk!1RIkB7}2R{^Im@5AZ*9y1`LiDp|x?=>GzfUMX2wmI%|%Ub}s#Ke-m z%9fwg7)DZN3r^+KzC|X}pef)fH|4Rvvc{fY!qL&90E;b5vLFq%Q0j!8;bYjXN1bDT z>*8up&T@Wy+1b&{FcfyDN-N4KeukyFjwPVRE~w`HqS~hZz1BBXYm7RWxtJko-B63l zlT-j;`mU-~=TZC2`xPjzMyZuUHfS9J`OLBI!*K&pP;3E+!{zvs0{;N9R+0Yz{9$iD zJV0;cwhHfM4kdiUV~Nv%PjgEWf0bXl`!G{(HDTWe_%#0jLMKkmKNEj7&mb&U{en#W9q5z5};}YNdBn#ytXA^ z4>NJ>n5iVnU6NUf~TRV(0?`9 zR>NXyO-e9rT0EEXqvZL<8k@A{lksTU-BZnDd&SR5?zLHlnAI6=GgC0g@if{ucOfI{ z7S{Ux3i;hCl-;D7KB`lvRbCA>;Ab^tU+A$^t#}I)@g!I+JxoCY&*-KwZ2BV;QC_GN zDmr#ykD~ng{7N#xlKe$DvxcV7(O*-HU;uTmhow~g+ez^&{(s@`vLH2cD}=$BBY{mA0dY?Gk{^%sTbnP)V3r!{={g z!>+AINh9QeC!&Yo27MAP zy^v;Y`KddTDpK4Gl_cE+*&=N!KyEMUk&BV;fJjIVhj>QhRpUop+ZiIC? zd_+hIz?-Df0N?JJC#nfj0W2*ysujc2WjFgzS(pxj}SXC;(4H ziMIZTnY?-_F6=s>3r@-HWA3MGH4_B@6aIoCZT!-cGr9piPypTz=mdASl0 z43RsO$ukNFk7RAR=zzH~Fq4kNbh?@IKzG>z+Yf?|kKCu>^W&Q=);vMX1{Xr>EHC>% ztuam?hXq2VM!tqL{{V)CaMJU*rBbQrzff2lb_+AX(#K#iRO`^MO|>Z2qVV=qX%ZaQ z3lKpB5x6Vyjf>O2dMkfvUhs$AbeJi!4%;jr3{KCE)143Au^HGFVeFT& zllx8i@%sf|#Lx7rco*SEE6uo9;n#w?vpwQnGWrxD(y zJ1_b+ejhV@HlWv@E3=#nso@3zx@RG+QKSmhUiM-!Z*OqcvWq9ZLOL&4DOWWswXFDYFlAaHolDwaMp6~Wv2Qm0%$!X_Y zMZ{`a><(^EgZ}`t^K`9NSP!UZbb781`0{w|@z>zrhg>$ncp~ukiq-h7M~=+#dZ#u2 z0AcZ&)*CFtVVgyiDL7&6Mx{qpd%2uvmYI&FbLWHXLopO}3k$$^&%<7NL)XasPy9}N zS-dmhG&XPW*zj+a@nioTe)O0A=e8P8gs0Yf-2N)pI_m{UeWy zPYoJy-X=Z>nCf(?PtU1WCC_lp9msWTJ$4VNUlEvolz)P)X5*H4k@z@a9aY4POC5;H zu@3Y6IIII4eaK#bjP1>u&QMKkjoVCqmZyX*Nr!0Sufu;kl7GE+SD)qB#>ZF{Xj7l6 z`wXM>jeZCE`mx%)b{%p1U<^tLFazp}WNkRMYyeMn10OGf?2oGJPFcznEO{oL^V}06k78 z4+|ZD%04K6qd&x$8I?>XpQ%%EooFn}2wUpv4Rc4;eQrgne@8QlfweTRi=6|ORH^$E z&c4Lu?;rAFxntdRL7xvV(KO<*oe%Lf)H+r5KVg{NWAcM1Z~eP3Z{5pQKStl+{{Y1* zA3K2m02_>wr_CSsc4ir_L5(Ezkjza7eWfKUa+l}(6Bw@JyIN<#f5Q)3JXPTT0F9gm zA6}jmekI&H)BxU(>l$Ukdwwh~CbV?e74q57=%V~#ct8$e!M_ul8x+b$X&j?m=GjF< z>CZu}2mWt$!#3@+xyY?^+x-EN@f$;FkM@6wJW0oDoLxHP(9H8J1v(YmOo0r4%K$zI zKZxG&W*5ux<@E9VJj7yZkZR@Fx)rGtyF;ESybn;}^j$^xEqGn{$M{yw^~QksjOyHG zcf;@OS`{>QBQe)>GuL6WHsS}&Z5o{JuT74iUR>8hC5?eAvwU#RNBb{}%b5QF{kI*4 z!&4K#u=@8f)0OIm)x475A!Is&ZYh9X;d&jAIl9eCVdh3S$scyQ~WJ3 z+U#)qjodiY74_a(g&2osdT%iw*|_{OYl<~#xwV>WQwF<>nDE|iM*hr_xHI%)G(IaT z@bkq!C|9E9)6TV)2Q9-?Ab|0M!aAei^}Z>i)GtdPiEuC->viJ3*E>_xxn8ixZAF-4^us9zoE|2oEBlZuk_}q59n4%^0w4o*xOi*$X!vpPsp4Za@p;4C z*H~s6<29|CRI7~7bINrv)Loc4=M~99l@<$%jsuy_i zYm9uWy12Bs7EOrG+g0qtVa-!m)A>z%X}|l&7fYJsayGK$EYlB{=k+Mn)L0BQ zVsOvq!i>WR%s`;%j%Esh+=d`aV8X;|2#(%p4~szAW0kY~+Px}t>Q|eMG}IRpv{UAz zzSrw+XLC<0!BUi^8c|MM_FMV)n#W@*RUx%rTpG|C(rnN+1F-T?9vb39Z`6RWG@bhd z8l0fZmsKj#lWp@p)lSOE8lhB3u=PyU4iHw4=S!fgZXu%3xFtC@IA3w7FD1ltAXNgv z%LmMp%_!%OB@R*|#&GZrmRdE98my=e#2YOi&5^pczFQpEg;`vNli8m!!JynOkj3Qz zpnqp-T;B@O8wTU+IlpIx^<3ele18t!aJjaz%YW{5wk_-v(ybglZ_c4#P%4)hC#~1r zoGat%OTN$Ill@K#KlG8RZ9^ZmWo@h2`pVMti-#YfR4RZhMf$}i&Ix8 zSLtf)KmHkvrcaZwk9Yq7co*4$g{!svvi|^UCQVB}_o*RzKDb z-0S3Y_X#svYp@9OvTejRAZ^gC2hTknC~hc@gUv&MWfO1}$>^)+9;8a!#w?K~)>njm zTy7N$l4Ti&p~p7?meDVJjmX#z=gEDAJT8af z@f7jx8Kz{>E~MBjq6R?(P3b(_Im~01 z<#au+C9BE5p-p$m@>c5KU6O3Yb8OcOhQho~E~f<^NiU^0`S0AiZqG+^UNUMblpg#8 zXyLH*$KrcfIVq3vJi|icJze8dgt|(*scO#?Tt3SxG{dN4_1<4e%bL0YprO)56l_qQ;Jp+3rf>gGKWOi$UyI0`yK>@^Zyh zq^Fu@jnAs5A9Z;-J^uj8jcs4FY!w;s;P6r5?~~p9KX!hxbbpEbzg1uQv@qvs!+pYDmG|h@Z@}|$Fri|>+)N} zE-CRZg1XNK#6A=2jMq))cnX2|T+=1SzYkiO24k6oOHWprX%--b>?gyQ;-8#xyC9{l zHF>3m)LA8ZSbcqfz|s`x=due;guy0x8^x|v>-)tC)Sig;&DP{didxV@!q+Vi&deAUlLb2?beryo-;%xIQY zq~h1McK)kJQx*>ITh67;aC)yG!0NmuM$|PaHLt3}A?+es@Ac7qoqS80=-AH7&#|K( zC$Y0|+*K*3C1=U`qg9K>JLNsCbjXV?hz4eUWLbzOJOzIo1~em*ChcV=>t5ODNHyOdGlH zc@1duC3ykjPvR59U2*W`%=|Oxja)HWpILEx9h~Ysx}7JJhrlx*UlhuZsT_yqIN`ZK zB#^@(Lf?Ib<@tp3nc{HKc2lJpG@ZCyxTSaH1@ZAU?`gHLu*#!GqgQ-QEAMoyzZP`w z15|vV(&emUfVBPA+ktWUZ4ZfyiCVT*fCBeT*F(+5vYX^vev2bt(iW1HLm#xWHlQ~u zL7$%cg+aiGC1GoU-}6)*H$Y|%lLatHKea0md|Rqv(E$OHdLE$zV0P}L5ip4na-!g( zN$d4eW4`4nvPIotMeGJii~Gq)?<3hF=}VijPzPWjZk3V0(HBqxN)S+ObOB?!M8Vw$ zq6q{+Qh<-)zjY_g2HT`a>J^oM6WpYIAq0t#6v~h?WhwGRr6Bb{1dZVYz`8~WK3$ZT zOv(e80iMUaCnQbMydkr(`=Q1XdKB+7KSeG5sS3a*{{U1aD}WZCBpV4ok}p5iNsuo$ zR@oAg6P-2zE^Cu1JMh|lQi2Qvx=4#L${gb#h@cC`@Kg#|%yur0U6*01SHxl}ww4}+ z8fEXPQN%T@Yemb6AOJTe7aXLbuHBL^7`E(%R~XuNE`T?avfXs9g5q}&DLSr!;kKdA zDYN#fWZ4!c6v6)hH9Bq|b?R?`KZ1`9xN)a4?kjl0$mnWqS6z+7P|`S~&6ecki43g4 z{{XeuAHB`}+f9RA9Lv7Bf9jbg0+vycVQFA6bQ&2)34)|3(x%a18pZ(Dk02MAHK)p7 zC&=;g!Q|L~oVdF=xp2bk?AbRjJ(qROftBbyRxXOEiJt}fTJP7m{MqVUi&$ukYjWLf zr86v>5bxQco8{GTuXmuT)|2eCO~-SR96%$uU!;9=qVyjWGAg=biJB`a&+_WcEvbXf zvif+MXWF1K>L9L^c$)YR_;uoIaT)iAT}O)H{%Z1G+`gwiH!7&_;rVWN&7eHk;s@}m zX@8Xtn#^jdIo=vrX8yci96feYUj|NL+5S3&c<{4R@OwYo@;s4kQ1NY&add9EbHvxf z_r;fldbP2xXc=gVRI z$L~L6`Q04TbtVPU+TbZ5znWuzvR^U6z}WdH2YCpd=nF4#>*$VY>-JC`A6us(2`Cp6 zW4a5RJ0&)bol^8cW>blniAa)e4^+9J*!rSG8A5GwfO(=WoyYZ4A|tY4#2b_*!;7gP z07Icv`J_QIH-sUgNGEWnV%@tY@fQjU!%VyGg-EF_1_#}C%iw#MQK#`2$nbTC{@0|l zsw_X^`3-;M!n%=Kvu`ei&0h@;Ht6mFc=O@s61C=|!)19JGb-3D*D}Vxl8zddCkAD)SpAWLlMg5+~Gc?LGJi4AFx|sm{%5A6 gB2akMTY()lJqqw*{^nbKJv4=cc7 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%0DY{b!S>Va9j%%?m{{Y2UxUVj=AByjc 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

p$Nf`sWhN9ZlZ}5n9H171I?`d6Jxm!1n;ow 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 J?wX%|{(mrMfIa{K diff --git a/apps/driver-app/ios/driverapp/Images.xcassets/AppIcon.appiconset/Contents.json b/apps/driver-app/ios/driverapp/Images.xcassets/AppIcon.appiconset/Contents.json index 90d8d4c..c3bb428 100644 --- a/apps/driver-app/ios/driverapp/Images.xcassets/AppIcon.appiconset/Contents.json +++ b/apps/driver-app/ios/driverapp/Images.xcassets/AppIcon.appiconset/Contents.json @@ -1,14 +1,14 @@ { - "images": [ + "images" : [ { - "filename": "App-Icon-1024x1024@1x.png", - "idiom": "universal", - "platform": "ios", - "size": "1024x1024" + "filename" : "App-Icon-1024x1024@1x.png", + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" } ], - "info": { - "version": 1, - "author": "expo" + "info" : { + "author" : "xcode", + "version" : 1 } -} \ No newline at end of file +} diff --git a/apps/driver-app/package.json b/apps/driver-app/package.json index 59e601d..c9aefcf 100644 --- a/apps/driver-app/package.json +++ b/apps/driver-app/package.json @@ -34,6 +34,7 @@ "expo-constants": "~16.0.2", "expo-dev-client": "~4.0.28", "expo-font": "~12.0.10", + "expo-keep-awake": "~13.0.2", "expo-linking": "~6.3.1", "expo-location": "~17.0.1", "expo-notifications": "^0.28.19", diff --git a/apps/driver-app/src/api/models.ts b/apps/driver-app/src/api/models.ts index a88b549..93396c8 100644 --- a/apps/driver-app/src/api/models.ts +++ b/apps/driver-app/src/api/models.ts @@ -53,7 +53,6 @@ export interface StartRequestResponse extends ApiResponse { status: 'started'; } - interface Location { latitude: number; longitude: number; @@ -66,6 +65,7 @@ interface TimeDistance { } export interface RideRequest { + createdAt: number; rideRequestId: string; estimatedPrice: string | null; pickupTimeDistance: TimeDistance | null; @@ -81,4 +81,5 @@ export interface RideRequest { | 'dropped-off'; riderName?: string | null; riderPhone?: string | null; -} \ No newline at end of file + updatedAt: number; +} diff --git a/apps/driver-app/src/components/animated-ride-request-card/index.tsx b/apps/driver-app/src/components/animated-ride-request-card/index.tsx new file mode 100644 index 0000000..45e645b --- /dev/null +++ b/apps/driver-app/src/components/animated-ride-request-card/index.tsx @@ -0,0 +1,67 @@ +import React, { useEffect, useRef } from 'react'; +import { Animated, ViewStyle } from 'react-native'; + +interface AnimatedRideRequestCardProps { + children: React.ReactNode; + isExiting?: boolean; + onExitComplete?: () => void; + style?: ViewStyle; +} + +const AnimatedRideRequestCard: React.FC = ({ + children, + isExiting = false, + onExitComplete, + style +}) => { + const fadeAnim = useRef(new Animated.Value(0)).current; + const scaleAnim = useRef(new Animated.Value(0.9)).current; + + useEffect(() => { + if (isExiting) { + Animated.parallel([ + Animated.timing(fadeAnim, { + toValue: 0, + duration: 300, + useNativeDriver: true + }), + Animated.timing(scaleAnim, { + toValue: 0.9, + duration: 300, + useNativeDriver: true + }) + ]).start(() => { + if (onExitComplete) onExitComplete(); + }); + } else { + Animated.parallel([ + Animated.timing(fadeAnim, { + toValue: 1, + duration: 300, + useNativeDriver: true + }), + Animated.timing(scaleAnim, { + toValue: 1, + duration: 300, + useNativeDriver: true + }) + ]).start(); + } + }, [isExiting, fadeAnim, scaleAnim, onExitComplete]); + + return ( + + {children} + + ); +}; + +export default AnimatedRideRequestCard; diff --git a/apps/driver-app/src/components/animated-ride-request-card/styles.ts b/apps/driver-app/src/components/animated-ride-request-card/styles.ts new file mode 100644 index 0000000..e69de29 diff --git a/apps/driver-app/src/components/map-view/index.tsx b/apps/driver-app/src/components/map-view/index.tsx index ac1e0ab..cb0f9bc 100644 --- a/apps/driver-app/src/components/map-view/index.tsx +++ b/apps/driver-app/src/components/map-view/index.tsx @@ -1,30 +1,121 @@ +import { RideRequest } from '@/src/api/models'; +import { useAppDispatch } from '@/src/hooks/use-app-dispatch'; +import useRoute from '@/src/hooks/use-route'; +import { Coordinates } from '@/src/services/map-service'; +import { initializePendingRequests } from '@/src/store/middleware/timeout-middleware'; +import { selectCurrentRideRequest } from '@/src/store/slices/ride-request-slice'; +import { haversineDistance } from '@/src/utils/location-utils'; import { Ionicons, MaterialIcons } from '@expo/vector-icons'; import Mapbox from '@rnmapbox/maps'; import { useEffect, useRef, useState } from 'react'; -import { Alert, TouchableOpacity, View } from 'react-native'; +import { Alert, Linking, TouchableOpacity, View } from 'react-native'; +import { useSelector } from 'react-redux'; import styles from './styles'; const MapView = () => { - const [userLocation, setUserLocation] = useState<[number, number]>(); + const [userLocation, setUserLocation] = useState(null); const [isMapInitialized, setIsMapInitialized] = useState(false); const cameraRef = useRef(null); + const { route, loading, error, fetchRoute } = useRoute(); + + const currentRideRequest = useSelector( + selectCurrentRideRequest + ) as RideRequest | null; + const fetchIntervalRef = useRef(null); + const lastFetchedRequestIdRef = useRef(null); + const lastFetchedRequestLocation = useRef<[number, number] | null>(null); + const dispatch = useAppDispatch(); + + const fetchRouteForCurrentRide = () => { + if ( + currentRideRequest && + currentRideRequest.pickupLocation && + currentRideRequest.tripLocation && + userLocation + ) { + fetchRoute( + { latitude: userLocation.latitude, longitude: userLocation.longitude }, + { + latitude: currentRideRequest.pickupLocation.latitude, + longitude: currentRideRequest.pickupLocation.longitude + }, + { + latitude: currentRideRequest.tripLocation.latitude, + longitude: currentRideRequest.tripLocation.longitude + } + ); + lastFetchedRequestIdRef.current = currentRideRequest.rideRequestId; + lastFetchedRequestLocation.current = [ + userLocation.latitude, + userLocation.longitude + ]; + } + }; + + const hasUserLastFetchedLocationChanged = () => { + if (lastFetchedRequestLocation.current && userLocation) { + const [lastLat, lastLon] = lastFetchedRequestLocation.current; + const distance = haversineDistance( + lastLat, + lastLon, + userLocation.latitude, + userLocation.longitude + ); + + return distance > 100; + } + return false; + }; useEffect(() => { - if (userLocation && !isMapInitialized) { - cameraRef.current?.setCamera({ - centerCoordinate: userLocation, - zoomLevel: 14, - animationDuration: 2000 - }); - setIsMapInitialized(true); + if (userLocation != null && (!isMapInitialized || hasRide())) { + if ( + hasInProgressRide() || + !isMapInitialized || + hasUserLastFetchedLocationChanged() + ) { + cameraRef.current?.setCamera({ + centerCoordinate: [userLocation.longitude, userLocation.latitude], + zoomLevel: hasInProgressRide() ? 16 : 12, + animationDuration: 2000 + }); + setIsMapInitialized(true); + } + + if ( + currentRideRequest && + currentRideRequest.pickupLocation && + currentRideRequest.tripLocation && + (lastFetchedRequestIdRef.current !== currentRideRequest.rideRequestId || + hasUserLastFetchedLocationChanged() || + !isMapInitialized) + ) { + if (fetchIntervalRef.current) { + clearInterval(fetchIntervalRef.current); + } + + fetchRouteForCurrentRide(); + dispatch(initializePendingRequests()); + + fetchIntervalRef.current = setInterval(() => { + fetchRouteForCurrentRide(); + dispatch(initializePendingRequests()); + }, 60000); + } } - }, [userLocation, isMapInitialized]); + + return () => { + if (fetchIntervalRef.current) { + clearInterval(fetchIntervalRef.current); + } + }; + }, [userLocation, currentRideRequest]); const handleZoomToUserLocation = () => { if (userLocation) { cameraRef.current?.setCamera({ - centerCoordinate: userLocation, - zoomLevel: 14, + centerCoordinate: [userLocation.longitude, userLocation.latitude], + zoomLevel: 12, animationDuration: 2000 }); } else { @@ -34,7 +125,64 @@ const MapView = () => { const onUserLocationUpdate = (location: Mapbox.Location) => { const userLocation = location.coords; - setUserLocation([userLocation.longitude, userLocation.latitude]); + setUserLocation({ + longitude: userLocation.longitude, + latitude: userLocation.latitude + }); + }; + + const openNavigationApp = () => { + if ( + !currentRideRequest?.pickupLocation || + !currentRideRequest?.tripLocation + ) { + Alert.alert('Navigation Error', 'No pickup or destination specified'); + return; + } + + const { latitude: pickupLat, longitude: pickupLng } = + currentRideRequest.pickupLocation; + const { latitude: dropOffLat, longitude: dropOffLng } = + currentRideRequest.tripLocation; + + Alert.alert( + 'Choose Navigation App', + 'Select an app to navigate', + [ + { + text: 'Google Maps', + onPress: () => + Linking.openURL( + `https://www.google.com/maps/dir/?api=1&origin=${userLocation?.latitude},${userLocation?.longitude}&waypoints=${pickupLat},${pickupLng}&destination=${dropOffLat},${dropOffLng}&travelmode=driving` + ) + }, + { + text: 'Waze', + onPress: () => { + Linking.openURL( + `https://waze.com/ul?ll=${pickupLat},${pickupLng}&navigate=yes` + ); + setTimeout(() => { + Linking.openURL( + `https://waze.com/ul?ll=${dropOffLat},${dropOffLng}&navigate=yes` + ); + }, 1000); + } + } + ], + { cancelable: true } + ); + }; + + const hasInProgressRide = () => { + return ( + currentRideRequest && + ['started', 'picked-up'].includes(currentRideRequest.status) + ); + }; + + const hasRide = () => { + return currentRideRequest !== null; }; return ( @@ -44,7 +192,7 @@ const MapView = () => { { radius: 50.0 }} /> + - - - + + + + + + + + + + + + + + + {currentRideRequest && currentRideRequest.pickupLocation && ( + + + + )} + + {currentRideRequest && currentRideRequest.tripLocation && ( + + + + )} + + {currentRideRequest && route && ( + + + + )} + {currentRideRequest && hasInProgressRide() && ( + + + + )} + { + const [permissionsGranted, setPermissionsGranted] = useState(false); + + useEffect(() => { + checkPermissions(); + + // Add an event listener for app state changes + const subscription = AppState.addEventListener('change', handleAppStateChange); + return () => subscription.remove(); + }, []); + + const handleAppStateChange = (nextAppState: string) => { + if (nextAppState === 'active') { + checkPermissions(); // Re-check permissions when app comes back to the foreground + } + }; + + const checkPermissions = async () => { + const { status: locationStatus } = await Location.getForegroundPermissionsAsync(); + const { status: backgroundStatus } = await Location.getBackgroundPermissionsAsync(); + const { status: notificationStatus } = await Notifications.getPermissionsAsync(); + + setPermissionsGranted( + locationStatus === 'granted' && + backgroundStatus === 'granted' && + notificationStatus === 'granted' + ); + }; + + const handleRequestPermissions = async () => { + const { status: locationStatus } = await Location.requestForegroundPermissionsAsync(); + const { status: backgroundStatus } = await Location.requestBackgroundPermissionsAsync(); + const { status: notificationStatus } = await Notifications.requestPermissionsAsync(); + + if ( + locationStatus === 'granted' && + backgroundStatus === 'granted' && + notificationStatus === 'granted' + ) { + setPermissionsGranted(true); + } else { + Alert.alert( + 'Permissions Required', + 'We need location, background location, and notification permissions to provide ride services.', + [ + { + text: 'Go to Settings', + onPress: () => Linking.openSettings(), + }, + ] + ); + } + }; + + if (permissionsGranted) { + return <>{children}; + } + + return ( + + Permissions Required + + To receive ride requests and navigate to passengers, we need access to notifications, location, and background location. Please enable these permissions in your settings to start accepting rides. + + + Grant Permissions + + + + ); +}; + +const styles = StyleSheet.create({ + overlay: { + position: 'absolute', + top: 0, + left: 0, + right: 0, + bottom: 0, + justifyContent: 'center', + alignItems: 'center', + backgroundColor: 'rgba(0, 0, 0, 0.7)', + paddingHorizontal: 20, + }, + title: { + fontSize: 24, + fontWeight: 'bold', + color: '#FFFFFF', + marginBottom: 20, + }, + message: { + fontSize: 16, + color: '#FFFFFF', + textAlign: 'center', + marginBottom: 30, + }, + button: { + backgroundColor: '#007AFF', + paddingVertical: 12, + paddingHorizontal: 24, + borderRadius: 8, + }, + buttonText: { + fontSize: 16, + color: '#FFFFFF', + }, +}); + +export default PermissionBlocker; diff --git a/apps/driver-app/src/components/ride-card/index.tsx b/apps/driver-app/src/components/ride-card/index.tsx new file mode 100644 index 0000000..05816f5 --- /dev/null +++ b/apps/driver-app/src/components/ride-card/index.tsx @@ -0,0 +1,123 @@ +import { RideRequest } from '@/src/api/models'; +import GenericCard from '@/src/components/generic-card'; +import { Ionicons } from '@expo/vector-icons'; +import React from 'react'; +import { Image, Text, TouchableOpacity, View } from 'react-native'; +import { styles } from './styles'; + +interface RideCardProps { + rideRequest: RideRequest; + type: 'pending' | 'accepted' | 'declined' | 'started' | 'picked-up' | 'dropped-off'; + onAccept?: (rideRequestId: string) => void; + onStartRide?: (rideRequestId: string) => void; + onPickUpRider?: (rideRequestId: string) => void; + onCompleteTrip?: (rideRequestId: string) => void; + onCallRider?: (riderPhone: string) => void; +} + +const RideCard: React.FC = ({ + rideRequest, + type, + onAccept, + onStartRide, + onPickUpRider, + onCompleteTrip, + onCallRider +}) => { + const { rideRequestId, estimatedPrice, riderName, riderPhone, pickupLocation, tripLocation } = rideRequest; + + const getButtonConfig = () => { + switch (type) { + case 'pending': + return { text: 'Accept', action: () => onAccept && onAccept(rideRequestId) }; + case 'accepted': + return { text: 'Start Trip', action: () => onStartRide && onStartRide(rideRequestId) }; + case 'started': + return { text: 'Pick Up Rider', action: () => onPickUpRider && onPickUpRider(rideRequestId) }; + case 'picked-up': + return { text: 'Complete Trip', action: () => onCompleteTrip && onCompleteTrip(rideRequestId) }; + case 'dropped-off': + return { text: 'Trip Complete', action: undefined }; + case 'declined': + return { text: 'Request Declined', action: undefined }; + default: + return { text: '', action: undefined }; + } + }; + + const { text: buttonText, action: onPressButton } = getButtonConfig(); + + // Define distance and time display based on status + const getDistanceDisplay = () => { + if (type === 'pending') { + return `Pickup: ${rideRequest.pickupTimeDistance?.time} (${rideRequest.pickupTimeDistance?.distance}), + Trip: ${rideRequest.tripTimeDistance?.time} (${rideRequest.tripTimeDistance?.distance})`; + } + if (type === 'started') { + return `Pickup Distance: ${rideRequest.pickupTimeDistance?.time} (${rideRequest.pickupTimeDistance?.distance}) away`; + } + if (type === 'picked-up') { + return `Trip Distance: ${rideRequest.tripTimeDistance?.time} (${rideRequest.tripTimeDistance?.distance}) away`; + } + return ''; + }; + + return ( + + + + Rider: {riderName} + {(type !== 'pending' && type !== 'declined' && type !== 'dropped-off') && ( + onCallRider && onCallRider(riderPhone || '')} + > + + Call + + )} + + + + + {type === 'pending' && pickupLocation && ( + + {pickupLocation.address} + + )} + {(type === 'pending' || type === 'picked-up' || type === 'accepted') && ( + + + {rideRequest.tripTimeDistance?.time} ({rideRequest.tripTimeDistance?.distance}) trip + + {tripLocation?.address} + + )} + {type === 'started' && ( + + + {rideRequest.pickupTimeDistance?.time} ({rideRequest.pickupTimeDistance?.distance}) pickup + + {pickupLocation?.address} + + )} + + ); +}; + +export default RideCard; diff --git a/apps/driver-app/src/components/ride-card/props.ts b/apps/driver-app/src/components/ride-card/props.ts new file mode 100644 index 0000000..660f2c2 --- /dev/null +++ b/apps/driver-app/src/components/ride-card/props.ts @@ -0,0 +1,10 @@ +import { RideRequest } from '@/src/api/models'; + +export interface RideCardProps { + rideRequest: RideRequest; + type: 'start' | 'inProgress' | 'request'; + onAccept?: () => void; + onStartTrip?: () => void; + onPickUpRider?: () => void; + onCallRider?: () => void; +} diff --git a/apps/driver-app/src/components/ride-card/styles.ts b/apps/driver-app/src/components/ride-card/styles.ts new file mode 100644 index 0000000..7044693 --- /dev/null +++ b/apps/driver-app/src/components/ride-card/styles.ts @@ -0,0 +1,61 @@ +import { StyleSheet } from 'react-native'; + +export const styles = StyleSheet.create({ + riderInfoContainer: { + flexDirection: 'row', + alignItems: 'center', + marginVertical: 10 + }, + riderDetails: { + flex: 1, + marginRight: 10 + }, + riderName: { + fontSize: 16, + fontWeight: 'bold', + color: '#333' + }, + callButton: { + flexDirection: 'row', + alignItems: 'center', + marginTop: 5 + }, + callButtonText: { + fontSize: 14, + color: '#007AFF', + marginLeft: 5 + }, + riderIcon: { + width: 50, + height: 50, + borderRadius: 25, + backgroundColor: '#ddd' + }, + infoContainer: { + marginTop: 10, + paddingHorizontal: 5 + }, + infoText: { + fontSize: 14, + color: '#666' + }, + locationText: { + fontSize: 15, + fontWeight: '600', + color: '#444', + marginVertical: 3 + }, + button: { + backgroundColor: '#007AFF', + paddingVertical: 10, + paddingHorizontal: 15, + borderRadius: 5, + alignItems: 'center', + marginTop: 10 + }, + buttonText: { + fontSize: 16, + color: '#fff', + fontWeight: '600' + } +}); diff --git a/apps/driver-app/src/components/ride-request-dashboard/index.tsx b/apps/driver-app/src/components/ride-request-dashboard/index.tsx index 1d5d585..38a1ad7 100644 --- a/apps/driver-app/src/components/ride-request-dashboard/index.tsx +++ b/apps/driver-app/src/components/ride-request-dashboard/index.tsx @@ -1,66 +1,42 @@ -import RideRequestCard from '@/src/components/ride-request-card'; -import TripCompleteCard from '@/src/components/trip-complete-card'; -import TripInProgressCard from '@/src/components/trip-in-progress-card'; -import TripStartCard from '@/src/components/trip-start-card'; +import { RideRequest } from '@/src/api/models'; import { useAppDispatch } from '@/src/hooks/use-app-dispatch'; import { - acceptRideRequest, - completeRideRequest, - pickUpRideRequest, - RideRequest, - startRideRequest + acceptRideRequest, + completeRideRequest, + pickUpRideRequest, + selectCurrentRideRequest, + startRideRequest } from '@/src/store/slices/ride-request-slice'; -import { Alert, Linking, Platform } from 'react-native'; +import { Alert, FlatList, Linking, Platform, View } from 'react-native'; import { useSelector } from 'react-redux'; +import AnimatedRideRequestCard from '../animated-ride-request-card'; +import RideCard from '../ride-card'; const RideRequestDashboard = () => { const rideRequests = useSelector( (state: any) => state.rideRequest.requests ) as RideRequest[]; + const currentRide = useSelector(selectCurrentRideRequest); const dispatch = useAppDispatch(); const handleConfirmPickup = (rideRequestId: string) => { - const data = async () => { - try { - await dispatch(pickUpRideRequest({ rideRequestId })).unwrap(); - } catch (error) { - Alert.alert('Error', 'Failed to confirm rider pickup.'); - } - }; - data().catch(() => console.error('Error confirming pickup')); + dispatch(pickUpRideRequest({ rideRequestId })); }; const handleAcceptRide = (rideRequestId: string) => { - const data = async () => { - console.log(`Accepting ride request: ${rideRequestId}`); - try { - await dispatch(acceptRideRequest({ rideRequestId })).unwrap(); - } catch (error) { - Alert.alert('Error', 'Failed to accept the ride request.'); - } - }; - data().catch(() => { - console.error('Error accepting ride request'); - }); + dispatch(acceptRideRequest({ rideRequestId })); }; - const handleStartTrip = (rideRequestId: string) => { - const data = async () => { - console.log(`Starting trip for request: ${rideRequestId}`); - try { - await dispatch(startRideRequest({ rideRequestId })).unwrap(); - } catch (error) { - Alert.alert('Error', 'Failed to start the trip.'); - } - }; - data().catch(() => { - console.error('Error starting trip'); - }); + const handleStartRide = (rideRequestId: string) => { + dispatch(startRideRequest({ rideRequestId })); + }; + + const handleCompleteTrip = (rideRequestId: string) => { + dispatch(completeRideRequest({ rideRequestId })); }; const handleCallRider = (riderPhone: string) => { const phoneNumber = `tel:${riderPhone}`; - if (Platform.OS === 'ios' || Platform.OS === 'android') { Linking.canOpenURL(phoneNumber) .then((supported) => { @@ -82,61 +58,70 @@ const RideRequestDashboard = () => { } }; - const handleCompleteTrip = (rideRequestId: string) => { - const data = async () => { - try { - await dispatch(completeRideRequest({ rideRequestId })).unwrap(); - } catch (error) { - Alert.alert('Error', 'Failed to complete the trip.'); - } - }; - data().catch(() => console.error('Error completing trip')); - }; - return ( - <> - {rideRequests - .filter((request) => request.status === 'pending') - .map((request) => ( - handleAcceptRide(request.rideRequestId)} - /> - ))} - - {rideRequests - .filter((request) => request.status === 'accepted') - .map((request) => ( - handleCallRider(request.riderPhone || '')} - onStartTrip={() => handleStartTrip(request.rideRequestId)} + + request.status === 'pending')} + ItemSeparatorComponent={() => } + renderItem={({ item }) => { + return ( + + + + ); + }} + /> + {/* Show the active ride based on its status */} + {currentRide?.status === 'accepted' && ( + + - ))} + + )} - {rideRequests - .filter((request) => request.status === 'started') - .map((request) => ( - handleCallRider(request.riderPhone || '')} - onPickUpRider={() => handleConfirmPickup(request.rideRequestId)} + {currentRide?.status === 'started' && ( + + - ))} + + )} - {rideRequests - .filter((request) => request.status === 'picked-up') - .map((request) => ( - handleCompleteTrip(request.rideRequestId)} + {currentRide?.status === 'picked-up' && ( + + - ))} - + + )} + ); }; diff --git a/apps/driver-app/src/components/setup.tsx b/apps/driver-app/src/components/setup.tsx index da61d0e..9efc8e3 100644 --- a/apps/driver-app/src/components/setup.tsx +++ b/apps/driver-app/src/components/setup.tsx @@ -1,10 +1,17 @@ +import { activateKeepAwakeAsync, deactivateKeepAwake } from 'expo-keep-awake'; import { Stack, useRouter } from 'expo-router'; import { useEffect } from 'react'; +import { useAppDispatch } from '../hooks/use-app-dispatch'; import { useAuthToken } from '../hooks/use-auth-token'; +import { initializePendingRequests } from '../store/middleware/timeout-middleware'; export const Setup = () => { const router = useRouter(); const authToken = useAuthToken(); + const dispatch = useAppDispatch(); + useEffect(() => { + dispatch(initializePendingRequests()); + }, [dispatch]); useEffect(() => { if (!authToken) { @@ -14,6 +21,18 @@ export const Setup = () => { } }, []); + useEffect(() => { + const keepScreenAwake = async () => { + await activateKeepAwakeAsync(); + }; + + keepScreenAwake(); + + return () => { + deactivateKeepAwake(); + }; + }, []); + return ( diff --git a/apps/driver-app/src/components/status-card/index.tsx b/apps/driver-app/src/components/status-card/index.tsx new file mode 100644 index 0000000..ee7a06d --- /dev/null +++ b/apps/driver-app/src/components/status-card/index.tsx @@ -0,0 +1,50 @@ +import { RootState } from '@/src/store'; +import { StyleSheet, Text, View } from 'react-native'; +import { useSelector } from 'react-redux'; + +const StatusCard = () => { + const { isConnected, isEnabled, isConnecting } = useSelector( + (state: RootState) => state.mqtt + ); + + const statusMessage = isEnabled + ? isConnected + ? 'Connected: Ready to Accept Rides' + : isConnecting + ? 'Connecting...' + : 'Disconnected: Unable to Accept Rides' + : 'MQTT Disabled'; + + const statusColor = isEnabled + ? isConnected + ? '#4CAF50' // Green for connected + : '#F44336' // Red for disconnected + : '#FFC107'; // Yellow for disabled + + return ( + + {statusMessage} + + ); +}; + +const styles = StyleSheet.create({ + card: { + padding: 10, + borderRadius: 8, + marginTop: 100, + marginHorizontal: 20, + alignItems: 'center', + justifyContent: 'center', + position: 'absolute', + zIndex: 100, + width: '90%', + }, + statusText: { + color: '#FFFFFF', + fontSize: 16, + fontWeight: 'bold', + }, +}); + +export default StatusCard; diff --git a/apps/driver-app/src/components/trip-complete-card/index.tsx b/apps/driver-app/src/components/trip-complete-card/index.tsx index 1d48a67..7fa9990 100644 --- a/apps/driver-app/src/components/trip-complete-card/index.tsx +++ b/apps/driver-app/src/components/trip-complete-card/index.tsx @@ -1,6 +1,7 @@ import GenericCard from '@/src/components/generic-card'; import { MaterialIcons } from '@expo/vector-icons'; import { Text, View } from 'react-native'; +import { ITripCompleteCardProps } from './props'; import { styles } from './styles'; const TripCompleteCard = ({ @@ -9,7 +10,7 @@ const TripCompleteCard = ({ }: ITripCompleteCardProps) => { return ( void; } diff --git a/apps/driver-app/src/components/trip-in-progress-card/index.tsx b/apps/driver-app/src/components/trip-in-progress-card/index.tsx index 080d5ae..18ef843 100644 --- a/apps/driver-app/src/components/trip-in-progress-card/index.tsx +++ b/apps/driver-app/src/components/trip-in-progress-card/index.tsx @@ -12,7 +12,7 @@ const TripInProgressCard: React.FC = ({ }) => { return ( = ({ }) => { return ( { accessToken && status?.status === 'granted' ) { - mqttClient.publishLocation(location[1], location[0], accessToken); - console.log( - `Published location to MQTT: ${location[0]}, ${location[1]}, accesssToken: ${accessToken}` - ); + mqttClient.publishLocation(location[1], location[0]); } }, [location, mqttClient, isConnected, status]); diff --git a/apps/driver-app/src/hooks/use-location-manager.ts b/apps/driver-app/src/hooks/use-location-manager.ts index 2efb932..9bf02c2 100644 --- a/apps/driver-app/src/hooks/use-location-manager.ts +++ b/apps/driver-app/src/hooks/use-location-manager.ts @@ -2,28 +2,47 @@ import * as Location from "expo-location"; import { useEffect, useState } from "react"; import { Alert } from "react-native"; -const useLocationManager = (isBackground = false, interval = 60000) => { +const useLocationManager = (isBackground = false, interval = 3000) => { const [location, setLocation] = useState<[number, number] | null>(null); - const checkPermissions = async () => { + const checkPermissions = async ( + isBackground = false, + shouldRequest = false + ) => { const { status } = await Location.getForegroundPermissionsAsync(); + if (status !== Location.PermissionStatus.GRANTED) { - const { status: requestStatus } = await Location.requestForegroundPermissionsAsync(); - if (requestStatus !== Location.PermissionStatus.GRANTED) { - Alert.alert("Permission denied", "Location permission is required."); + if (shouldRequest) { + const { status: requestStatus } = + await Location.requestForegroundPermissionsAsync(); + if (requestStatus !== Location.PermissionStatus.GRANTED) { + return false; + } + } else { return false; } } + if (isBackground) { - const { status: backgroundStatus } = await Location.getBackgroundPermissionsAsync(); + const { status: backgroundStatus } = + await Location.getBackgroundPermissionsAsync(); if (backgroundStatus !== Location.PermissionStatus.GRANTED) { - const { status: backgroundRequestStatus } = await Location.requestBackgroundPermissionsAsync(); - if (backgroundRequestStatus !== Location.PermissionStatus.GRANTED) { - Alert.alert("Permission denied", "Background location permission is required."); + if (shouldRequest) { + const { status: backgroundRequestStatus } = + await Location.requestBackgroundPermissionsAsync(); + if (backgroundRequestStatus !== Location.PermissionStatus.GRANTED) { + Alert.alert( + 'Permission denied', + 'Background location permission is required.' + ); + return false; + } + } else { return false; } } } + return true; }; @@ -32,7 +51,7 @@ const useLocationManager = (isBackground = false, interval = 60000) => { const userLocation = await Location.getCurrentPositionAsync({}); const coords: [number, number] = [ userLocation.coords.longitude, - userLocation.coords.latitude, + userLocation.coords.latitude ]; setLocation(coords); return coords; @@ -46,7 +65,7 @@ const useLocationManager = (isBackground = false, interval = 60000) => { accuracy: Location.Accuracy.High, timeInterval: interval, distanceInterval: 10, - showsBackgroundLocationIndicator: true, + showsBackgroundLocationIndicator: true }); } }; @@ -59,7 +78,7 @@ const useLocationManager = (isBackground = false, interval = 60000) => { useEffect(() => { if (isBackground) { - startLocationUpdates("background-location-task"); + startLocationUpdates('background-location-task'); } else { fetchUserLocation(); const locationInterval = setInterval(() => { @@ -72,7 +91,12 @@ const useLocationManager = (isBackground = false, interval = 60000) => { } }, [isBackground, interval]); - return { location, fetchUserLocation, startLocationUpdates, stopLocationUpdates }; + return { + location, + fetchUserLocation, + startLocationUpdates, + stopLocationUpdates + }; }; export default useLocationManager; diff --git a/apps/driver-app/src/hooks/use-mqtt-client.ts b/apps/driver-app/src/hooks/use-mqtt-client.ts index 3264022..d6ee9ec 100644 --- a/apps/driver-app/src/hooks/use-mqtt-client.ts +++ b/apps/driver-app/src/hooks/use-mqtt-client.ts @@ -8,11 +8,9 @@ const useMQTTClient = () => { useEffect(() => { mqttClient.connect( () => { - console.log("MQTT Connected!"); setIsConnected(true); }, (error) => { - console.error("MQTT Connection Error:", error); setIsConnected(false); } ); diff --git a/apps/driver-app/src/hooks/use-route.ts b/apps/driver-app/src/hooks/use-route.ts new file mode 100644 index 0000000..3f7b996 --- /dev/null +++ b/apps/driver-app/src/hooks/use-route.ts @@ -0,0 +1,48 @@ +import { useState } from 'react'; +import MapService, { + Coordinates, + RouteGeometry +} from '../services/map-service'; + +interface UseRouteResult { + route: RouteGeometry | null; + loading: boolean; + error: string | null; + fetchRoute: ( + userLocation: Coordinates, + pickupPoint: Coordinates, + dropOffPoint: Coordinates + ) => Promise; +} + +const useRoute = (): UseRouteResult => { + const [route, setRoute] = useState(null); + const [loading, setLoading] = useState(false); + const [error, setError] = useState(null); + + const fetchRoute = async ( + userLocation: Coordinates, + pickupPoint: Coordinates, + dropOffPoint: Coordinates + ) => { + setLoading(true); + setError(null); + + try { + const fetchedRoute = await MapService.getRoute( + userLocation, + pickupPoint, + dropOffPoint + ); + setRoute(fetchedRoute || null); + } catch (err) { + setError('Failed to fetch route'); + } finally { + setLoading(false); + } + }; + + return { route, loading, error, fetchRoute }; +}; + +export default useRoute; diff --git a/apps/driver-app/src/services/map-service.ts b/apps/driver-app/src/services/map-service.ts new file mode 100644 index 0000000..38211bb --- /dev/null +++ b/apps/driver-app/src/services/map-service.ts @@ -0,0 +1,60 @@ +import MapboxClient from '@mapbox/mapbox-sdk'; +import Directions from '@mapbox/mapbox-sdk/services/directions'; +import config from '../config'; + +export interface Coordinates { + longitude: number; + latitude: number; +} + +export interface LineStringGeometry { + type: 'LineString'; + coordinates: [number, number][]; +} + +export interface MultiLineStringGeometry { + type: 'MultiLineString'; + coordinates: [number, number][][]; +} + +export type RouteGeometry = LineStringGeometry | MultiLineStringGeometry; + +export interface MapServiceInterface { + getRoute: ( + userLocation: Coordinates, + pickupPoint: Coordinates, + dropOffPoint: Coordinates + ) => Promise; +} + +const client = MapboxClient({ accessToken: config.MAPBOX_ACCESS_TOKEN }); +const directionsService = Directions(client); + +const getRoute: MapServiceInterface['getRoute'] = async ( + userLocation, + pickupPoint, + dropOffPoint +) => { + try { + const response = await directionsService + .getDirections({ + profile: 'driving', + waypoints: [ + { coordinates: [userLocation.longitude, userLocation.latitude] }, + { coordinates: [pickupPoint.longitude, pickupPoint.latitude] }, + { coordinates: [dropOffPoint.longitude, dropOffPoint.latitude] } + ], + geometries: 'geojson' + }) + .send(); + + const route = response.body.routes[0].geometry as RouteGeometry; + return route; + } catch (error) { + console.error('Error fetching directions:', error); + } +}; + +const MapService: MapServiceInterface = { getRoute }; + +export default MapService; diff --git a/apps/driver-app/src/services/mqtt-client-service.ts b/apps/driver-app/src/services/mqtt-client-service.ts index 28850b2..b1b3770 100644 --- a/apps/driver-app/src/services/mqtt-client-service.ts +++ b/apps/driver-app/src/services/mqtt-client-service.ts @@ -3,12 +3,18 @@ import { Client, Message } from 'paho-mqtt'; import { Platform } from 'react-native'; import config from '../config'; import store from '../store'; -import { connectFailure, connectSuccess } from '../store/slices/mqtt-slice'; +import { + connectFailure, + connectSuccess, + startConnecting +} from '../store/slices/mqtt-slice'; import { setRideRequestWithTimeout } from '../store/slices/ride-request-slice'; class MQTTClientService { private client: Client; - private isSuscribed: boolean = false; + private reconnectInterval: NodeJS.Timeout | null = null; + private retryAttempts = 0; + private maxRetryAttempts = 5; constructor(clientId: string) { this.client = new Client( @@ -22,89 +28,117 @@ class MQTTClientService { } connect = (onSuccess: () => void, onFailure: (error: Error) => void) => { + store.dispatch(startConnecting()); this.client.connect({ useSSL: false, - timeout: 3000, + keepAliveInterval: 30, + timeout: 10000, onSuccess: () => { - console.log('Connected to MQTT broker'); - store.dispatch(connectSuccess()); + this.clearReconnectInterval(); onSuccess(); + this.subscribeToRideRequests(); }, onFailure: (error: any) => { store.dispatch(connectFailure(error.errorMessage)); - console.error('Failed to connect to MQTT broker:', error); + this.scheduleReconnect(); onFailure(error); } }); }; - getDriverId() { - const driverId = store.getState().auth.driverId as string; - console.log(` driverId: ${driverId}`); - return driverId; - } + private scheduleReconnect = () => { + if (this.reconnectInterval) return; - hasDriverId() { - return this.getDriverId().length > 0; - } + this.reconnectInterval = setInterval(() => { + store.dispatch(startConnecting()); + this.connect( + () => console.log('Reconnected successfully.'), + (error) => console.error('Reconnection attempt failed:', error) + ); + }, 5000); + }; - getTopic(topic: string) { - switch (topic) { - case 'ride_requests': - return (config.MQTT_TOPIC_RIDE_REQUESTS + '').replaceAll( - ':driver_id', - this.getDriverId() - ); - case 'driver_location': - const topic = (config.MQTT_TOPIC_DRIVER_LOCATION + '').replaceAll( - ':driver_id', - this.getDriverId() - ); - console.log( - `topic: ${topic} | debug | driver_id: ${this.getDriverId()} | templat: ${ - config.MQTT_TOPIC_DRIVER_LOCATION - }` - ); - return topic; - default: - return ''; + private clearReconnectInterval = () => { + if (this.reconnectInterval) { + clearInterval(this.reconnectInterval); + this.reconnectInterval = null; } - } + }; - subscribeToRideRequests = (accessToken: string = '') => { - if (!this.isSuscribed && accessToken.length > 0 && this.hasDriverId()) { - const topic = this.getTopic('ride_requests'); - this.isSuscribed = true; - this.client.subscribe(topic, { - onSuccess: () => { - console.log('Subscribed to MQTT topic:', topic); - }, - onFailure: (error: any) => { - console.error('Failed to subscribe to MQTT topic:', error); - } - }); + private getDriverId = () => store.getState().auth.driverId as string; + + private hasDriverId = () => this.getDriverId()?.length > 0; + + private getAccessToken = () => store.getState().auth.accessToken as string; + + private getTopic = (topic: string) => { + const driverId = this.getDriverId(); + const accessToken = this.getAccessToken(); + if (topic === 'ride_requests') { + return config.MQTT_TOPIC_RIDE_REQUESTS.replace(':driver_id', driverId); + } else if (topic === 'driver_location') { + return config.MQTT_TOPIC_DRIVER_LOCATION.replace( + ':driver_id', + accessToken + ); } + return ''; }; - onConnectionLost = (responseObject: { + private subscribeToRideRequests = () => { + if (!this.hasDriverId()) return; + + const topic = this.getTopic('ride_requests'); + + this.client.subscribe(topic, { + onSuccess: () => { + this.retryAttempts = 0; + store.dispatch(connectSuccess()); + }, + onFailure: (error: any) => { + store.dispatch(connectFailure(error.errorMessage)); + + if (this.retryAttempts < this.maxRetryAttempts) { + this.retryAttempts += 1; + const delay = Math.pow(2, this.retryAttempts) * 1000; + setTimeout(this.subscribeToRideRequests, delay); + } else { + this.scheduleReconnect(); + } + } + }); + }; + + private onConnectionLost = (responseObject: { errorCode: number; errorMessage?: string; }) => { if (responseObject.errorCode !== 0) { - store.dispatch(connectFailure(responseObject.errorMessage as string)); - console.log(`${JSON.stringify(config)}`); + store.dispatch( + connectFailure(responseObject.errorMessage || 'Unknown error') + ); console.error('MQTT connection lost:', responseObject.errorMessage); + this.scheduleReconnect(); } }; - onMessageArrived = (message: Message) => { - console.log('Message received:', message.payloadString); - const rideRequest = JSON.parse(message.payloadString); + private onMessageArrived = (message: Message) => { + try { + const rideRequest = JSON.parse(message.payloadString); + this.showRideRequestNotification(rideRequest); + this.dispatchRideRequestWithTimeout(rideRequest); + } catch (error) { + console.error('Failed to process incoming message:', error); + setTimeout(() => this.onMessageArrived(message), 1000); // Retry processing message + } + }; + private showRideRequestNotification = (rideRequest: any) => { Notifications.setNotificationChannelAsync('new-ride-request', { name: 'New Ride Request', importance: Notifications.AndroidImportance.HIGH }); + Notifications.setNotificationHandler({ handleNotification: async () => ({ shouldShowAlert: true, @@ -112,84 +146,59 @@ class MQTTClientService { shouldSetBadge: false }) }); + Notifications.scheduleNotificationAsync({ content: { - title: 'You got a new ride requests', + title: 'You got a new ride request', body: `Pickup location: ${rideRequest.pickupLocation.address}`, - sound: Platform.OS == 'android' ? undefined : 'default' + sound: Platform.OS === 'android' ? undefined : 'default' }, - trigger: { - channelId: 'new-ride-request' - } - }) - .then((notificationId) => { - console.log(notificationId); - }) - .catch((error) => { - console.error(error); - }); + trigger: { channelId: 'new-ride-request' } + }).catch((error) => console.error('Notification error:', error)); + }; + private dispatchRideRequestWithTimeout = (rideRequest: any) => { store.dispatch( setRideRequestWithTimeout({ + createdAt: Date.now(), riderName: '', riderPhone: '', rideRequestId: rideRequest.rideRequestId, estimatedPrice: rideRequest.estimatedPrice, pickupTimeDistance: rideRequest.pickupTimeDistance, - pickupLocation: { - latitude: rideRequest.pickupLocation.latitude, - longitude: rideRequest.pickupLocation.longitude, - address: rideRequest.pickupLocation.address - }, + pickupLocation: rideRequest.pickupLocation, tripTimeDistance: rideRequest.tripTimeDistance, - tripLocation: { - latitude: rideRequest.tripLocation.latitude, - longitude: rideRequest.tripLocation.longitude, - address: rideRequest.tripLocation.address - } + tripLocation: rideRequest.tripLocation, + updatedAt: Date.now() }) ); }; - publishLocation = ( - latitude: number, - longitude: number, - accessToken: string - ) => { - if ( - this.client.isConnected() && - accessToken.length > 0 && - this.hasDriverId() - ) { - this.subscribeToRideRequests(accessToken); - console.log( - `publishing location ${latitude} ${longitude} ${accessToken}` - ); + publishLocation = (latitude: number, longitude: number) => { + if (this.hasDriverId()) { const payload = JSON.stringify({ latitude, longitude, isAvailable: true, - timestamp: new Date().getTime() + timestamp: Date.now() }); const message = new Message(payload); message.destinationName = this.getTopic('driver_location'); - this.client.send(message); - console.log('Published location to MQTT:', payload); + if (this.client.isConnected()) { + this.client.send(message); + } } else { - console.error('Cannot publish: MQTT client is not connected'); } }; disconnect = () => { if (this.client.isConnected()) { this.client.disconnect(); - console.log('Disconnected from MQTT broker'); } + this.clearReconnectInterval(); }; - isConnected = () => { - return this.client.isConnected(); - }; + isConnected = () => this.client.isConnected(); } export default MQTTClientService; diff --git a/apps/driver-app/src/store/index.ts b/apps/driver-app/src/store/index.ts index c09c423..f64e8e6 100644 --- a/apps/driver-app/src/store/index.ts +++ b/apps/driver-app/src/store/index.ts @@ -1,14 +1,23 @@ import { apiSlice } from '@/src/store/slices/api-slice'; -import authReducer from '@/src/store/slices/auth-slice'; +import authReducer, { setTokens } from '@/src/store/slices/auth-slice'; import mqttReducer from '@/src/store/slices/mqtt-slice'; import rideRequestReducer from '@/src/store/slices/ride-request-slice'; import AsyncStorage from '@react-native-async-storage/async-storage'; -import { combineReducers, configureStore } from '@reduxjs/toolkit'; +import { + combineReducers, + configureStore, + createListenerMiddleware +} from '@reduxjs/toolkit'; import { persistReducer, persistStore } from 'redux-persist'; +import fetchRideRequestsMiddleware from './middleware/fetch-ride-requests-middleware'; +import timeoutMiddleware, { + initializePendingRequests +} from './middleware/timeout-middleware'; const persistConfig = { key: 'root', - storage: AsyncStorage + storage: AsyncStorage, + blacklist: ['mqtt', apiSlice.reducerPath] }; const reducer = combineReducers({ @@ -20,6 +29,16 @@ const reducer = combineReducers({ const persistedReducer = persistReducer(persistConfig, reducer); +const listenerMiddleware = createListenerMiddleware(); + +listenerMiddleware.startListening({ + actionCreator: setTokens, + effect: async (action, listenerApi) => { + // Dispatch initializePendingRequests when tokens are set + listenerApi.dispatch(initializePendingRequests()); + } +}); + const store = configureStore({ reducer: persistedReducer, middleware: (getDefaultMiddleware) => @@ -34,7 +53,12 @@ const store = configureStore({ 'persist/REGISTER' ] } - }).concat(apiSlice.middleware) + }).concat( + apiSlice.middleware, + timeoutMiddleware, + fetchRideRequestsMiddleware, + listenerMiddleware.middleware + ) }); export const persistor = persistStore(store); diff --git a/apps/driver-app/src/store/middleware/fetch-ride-requests-middleware.ts b/apps/driver-app/src/store/middleware/fetch-ride-requests-middleware.ts new file mode 100644 index 0000000..910d563 --- /dev/null +++ b/apps/driver-app/src/store/middleware/fetch-ride-requests-middleware.ts @@ -0,0 +1,86 @@ +// In fetchRideRequestsMiddleware.ts +import { RideRequest } from '@/src/api/models'; +import config from '@/src/config'; +import { Middleware } from '@reduxjs/toolkit'; +import axios from 'axios'; +import { AppDispatch, RootState } from '../../store'; +import { + addRideRequest, + updateRideRequest +} from '../slices/ride-request-slice'; +import { initializePendingRequests } from './timeout-middleware'; + +const fetchRideRequestsMiddleware: Middleware = (store: any) => { + let lastFetchTime: Date | null = null; + + return (next) => async (action) => { + if (initializePendingRequests.match(action)) { + const now = new Date(); + + if (!lastFetchTime || now.getTime() - lastFetchTime.getTime() > 10000) { + lastFetchTime = now; + + if (store.getState().auth.accessToken) { + await fetchAndUpdateRideRequests(store.dispatch, store.getState); + } + } + } + + return next(action); + }; +}; + +const fetchAndUpdateRideRequests = async ( + dispatch: AppDispatch, + getState: () => RootState +) => { + try { + // Make a direct Axios request to fetch ride requests + const response = await axios.get( + config.MORRO_API_BASE_URL + '/drivers/rideRequests', + { + baseURL: config.MORRO_API_BASE_URL, + headers: { + Authorization: `Bearer ${getState().auth.accessToken}` + } + } + ); + const newData = response.data.data; + console.log('Fetched ride requests:', JSON.stringify(newData)); + + const state = getState(); + const existingRequests = state.rideRequest.requests; + + const existingRequestIds = existingRequests.map((req) => req.rideRequestId); + const fetchedRequestIds = response.data.data.map( + (req: RideRequest) => req.rideRequestId + ); + + newData.forEach((rideRequest: any) => { + const { rideRequestId } = rideRequest; + console.log(`checking ride request for id`, rideRequest.rideRequestId); + if (existingRequestIds.includes(rideRequestId)) { + dispatch( + updateRideRequest({ + rideRequestId, + data: rideRequest + }) + ); + } else { + dispatch(addRideRequest(rideRequest)); + } + }); + } catch (error) { + console.error('Error fetching ride requests:', error); + } +}; + +// Helper function to check if a ride request has changed +const hasChanged = (existingRequest: RideRequest, newRequest: RideRequest) => { + return ( + existingRequest.status !== newRequest.status || + existingRequest.updatedAt !== newRequest.updatedAt + ); +}; + +export default fetchRideRequestsMiddleware; diff --git a/apps/driver-app/src/store/middleware/timeout-middleware.ts b/apps/driver-app/src/store/middleware/timeout-middleware.ts new file mode 100644 index 0000000..2b5d301 --- /dev/null +++ b/apps/driver-app/src/store/middleware/timeout-middleware.ts @@ -0,0 +1,70 @@ +import { createAction, Middleware } from '@reduxjs/toolkit'; +import { RootState } from '../../store'; +import { + addRideRequest, + updateRideRequestStatus +} from '../slices/ride-request-slice'; + +export const initializePendingRequests = createAction( + 'rideRequest/initializePendingRequests' +); + +const timeoutMiddleware: Middleware = + ({ dispatch, getState }) => + (next) => + (action: any) => { + const result = next(action); + + const setRequestTimeout = (rideRequestId: string, createdAt: number) => { + const now = Date.now(); + const timeElapsed = now - createdAt; + + if (timeElapsed > 10000) { + dispatch( + updateRideRequestStatus({ + rideRequestId, + status: 'declined' + }) + ); + } else { + setTimeout(() => { + const currentState = getState() as RootState; + const request = currentState.rideRequest.requests.find( + (req) => req.rideRequestId === rideRequestId + ); + + if (request && request.status === 'pending') { + dispatch( + updateRideRequestStatus({ + rideRequestId, + status: 'declined' + }) + ); + } + }, 15000 - timeElapsed); + } + }; + + if (addRideRequest.match(action)) { + const { rideRequestId, status, createdAt } = action.payload; + + if (status === 'pending') { + setRequestTimeout(rideRequestId, createdAt); + } + } + + if (initializePendingRequests.match(action)) { + const state = getState() as RootState; + const pendingRequests = state.rideRequest.requests.filter( + (req) => req.status === 'pending' + ); + + pendingRequests.forEach((request) => + setRequestTimeout(request.rideRequestId, request.createdAt) + ); + } + + return result; + }; + +export default timeoutMiddleware; diff --git a/apps/driver-app/src/store/slices/api-slice.ts b/apps/driver-app/src/store/slices/api-slice.ts index 59bafa2..9d3d8ff 100644 --- a/apps/driver-app/src/store/slices/api-slice.ts +++ b/apps/driver-app/src/store/slices/api-slice.ts @@ -16,6 +16,7 @@ const API_BASE_URL = config.MORRO_API_BASE_URL; export const apiSlice = createApi({ reducerPath: 'api', + tagTypes: ['somethingelseKeyApi'], baseQuery: fetchBaseQuery({ baseUrl: API_BASE_URL, prepareHeaders: (headers, { getState }) => { @@ -74,6 +75,18 @@ export const apiSlice = createApi({ method: 'POST', body: data }) + }), + getRideRequestsResponse: builder.query<{ data: any[] }, void>({ + keepUnusedDataFor: 0, + query: () => ({ + url: `/drivers/rideRequests`, + headers: { + 'Cache-Control': 'no-store', + Pragma: 'no-cache' + }, + }), + forceRefetch: () => true, + providesTags: ['somethingelseKeyApi'] }) }) }); @@ -81,5 +94,6 @@ export const apiSlice = createApi({ export const { useRegisterDriverMutation, useLoginDriverMutation, - useAcceptRideRequestMutation + useAcceptRideRequestMutation, + useGetRideRequestsResponseQuery } = apiSlice; diff --git a/apps/driver-app/src/store/slices/ride-request-slice.ts b/apps/driver-app/src/store/slices/ride-request-slice.ts index 98e55ef..37624e4 100644 --- a/apps/driver-app/src/store/slices/ride-request-slice.ts +++ b/apps/driver-app/src/store/slices/ride-request-slice.ts @@ -9,8 +9,6 @@ import { RootState } from '@/src/store'; import { apiSlice } from '@/src/store/slices/api-slice'; import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit'; - - interface RideRequestState { requests: RideRequest[]; } @@ -19,6 +17,13 @@ const initialState: RideRequestState = { requests: [] }; +export const selectCurrentRideRequest = (state: RootState) => + state.rideRequest.requests.find( + (request) => + request.status === 'accepted' || + request.status === 'started' || + request.status === 'picked-up' + ); export const acceptRideRequest = createAsyncThunk< AcceptRequestResponse, @@ -26,11 +31,12 @@ export const acceptRideRequest = createAsyncThunk< { state: RootState } >( 'rideRequest/acceptRideRequest', - async (data, { dispatch, rejectWithValue }) => { + async (data, { dispatch, getState, rejectWithValue }) => { try { const response = await dispatch( apiSlice.endpoints.acceptRideRequest.initiate(data) ).unwrap(); + dispatch( updateRideRequestStatus({ rideRequestId: data.rideRequestId, @@ -39,6 +45,23 @@ export const acceptRideRequest = createAsyncThunk< riderPhone: response.riderPhone }) ); + + const state = getState() as RootState; + const pendingRequests = state.rideRequest.requests.filter( + (request) => + request.status === 'pending' && + request.rideRequestId !== data.rideRequestId + ); + + pendingRequests.forEach((request) => { + dispatch( + updateRideRequestStatus({ + rideRequestId: request.rideRequestId, + status: 'declined' + }) + ); + }); + return response; } catch (error) { console.error('Error accepting ride request:', error); @@ -47,7 +70,6 @@ export const acceptRideRequest = createAsyncThunk< } ); - export const startRideRequest = createAsyncThunk< StartRequestResponse, StartRequestData, @@ -73,36 +95,9 @@ export const startRideRequest = createAsyncThunk< } ); - -export const setRideRequestWithTimeout = createAsyncThunk( - 'rideRequest/setRideRequestWithTimeout', - async ( - rideRequestData: Omit, - { dispatch, getState } - ) => { - dispatch(addRideRequest({ ...rideRequestData, status: 'pending' })); - - setTimeout(() => { - const state = getState() as RootState; - const request = state.rideRequest.requests.find( - (req) => req.rideRequestId === rideRequestData.rideRequestId - ); - - if (request && request.status === 'pending') { - dispatch( - updateRideRequestStatus({ - rideRequestId: rideRequestData.rideRequestId, - status: 'declined' - }) - ); - } - }, 15000); - } -); - export const pickUpRideRequest = createAsyncThunk< - StartRequestResponse, - StartRequestData, + StartRequestResponse, + StartRequestData, { state: RootState } >( 'rideRequest/pickUpRideRequest', @@ -129,16 +124,61 @@ export const completeRideRequest = createAsyncThunk< void, { rideRequestId: string }, { state: RootState } ->('rideRequest/completeRideRequest', async ({ rideRequestId }, { dispatch, rejectWithValue }) => { - try { - const response = await dispatch(apiSlice.endpoints.completeRideRequest.initiate({ rideRequestId })).unwrap(); - dispatch(updateRideRequestStatus({ rideRequestId, status: 'dropped-off' })); - return response; - } catch (error) { - console.error('Error completing ride request:', error); - return rejectWithValue(error); +>( + 'rideRequest/completeRideRequest', + async ({ rideRequestId }, { dispatch, rejectWithValue }) => { + try { + const response = await dispatch( + apiSlice.endpoints.completeRideRequest.initiate({ rideRequestId }) + ).unwrap(); + dispatch( + updateRideRequestStatus({ rideRequestId, status: 'dropped-off' }) + ); + return response; + } catch (error) { + console.error('Error completing ride request:', error); + return rejectWithValue(error); + } } -}); +); + + +export const setRideRequestWithTimeout = createAsyncThunk( + 'rideRequest/setRideRequestWithTimeout', + async ( + rideRequestData: Omit, + { dispatch, getState } + ) => { + const state = getState() as RootState; + const currentRide = selectCurrentRideRequest(state); + + if (!currentRide) { + dispatch( + addRideRequest({ + ...rideRequestData, + status: 'pending', + createdAt: Date.now() + }) + ); + + setTimeout(() => { + const state = getState() as RootState; + const request = state.rideRequest.requests.find( + (req) => req.rideRequestId === rideRequestData.rideRequestId + ); + + if (request && request.status === 'pending') { + dispatch( + updateRideRequestStatus({ + rideRequestId: rideRequestData.rideRequestId, + status: 'declined' + }) + ); + } + }, 15000); + } + } +); const rideRequestSlice = createSlice({ name: 'rideRequest', @@ -167,13 +207,46 @@ const rideRequestSlice = createSlice({ } } }, - clearRideRequests: (state) => { - state.requests = []; - }, removeRideRequest: (state, action: PayloadAction) => { state.requests = state.requests.filter( (req) => req.rideRequestId !== action.payload ); + }, + updateRideRequest: ( + state, + action: PayloadAction<{ rideRequestId: string; data: RideRequest }> + ) => { + const index = state.requests.findIndex( + (req) => req.rideRequestId === action.payload.rideRequestId + ); + if (index !== -1) { + state.requests[index] = { + ...state.requests[index], + ...action.payload.data + }; + } + }, + addRideRequests: (state, action: PayloadAction) => { + state.requests = action.payload; + }, + clearRideRequests: (state) => { + state.requests = []; + }, + updateRideRequestDistanceTimes: ( + state, + action: PayloadAction<{ + rideRequestId: string; + tripTimeDistance: { distance: string; time: string }; + pickupTimeDistance: { distance: string; time: string }; + }> + ) => { + const request = state.requests.find( + (req) => req.rideRequestId === action.payload.rideRequestId + ); + if (request) { + request.tripTimeDistance = action.payload.tripTimeDistance; + request.pickupTimeDistance = action.payload.pickupTimeDistance; + } } } }); @@ -182,6 +255,9 @@ export const { addRideRequest, updateRideRequestStatus, clearRideRequests, - removeRideRequest + removeRideRequest, + addRideRequests, + updateRideRequest, + updateRideRequestDistanceTimes } = rideRequestSlice.actions; export default rideRequestSlice.reducer; diff --git a/apps/driver-app/src/utils/location-utils.ts b/apps/driver-app/src/utils/location-utils.ts new file mode 100644 index 0000000..3cd7cbf --- /dev/null +++ b/apps/driver-app/src/utils/location-utils.ts @@ -0,0 +1,24 @@ +const toRadians = (degrees: number) => (degrees * Math.PI) / 180; + +const haversineDistance = ( + lat1: number, + lon1: number, + lat2: number, + lon2: number +): number => { + const earthRadius = 6371000; + const dLat = toRadians(lat2 - lat1); + const dLon = toRadians(lon2 - lon1); + + const a = + Math.sin(dLat / 2) * Math.sin(dLat / 2) + + Math.cos(toRadians(lat1)) * + Math.cos(toRadians(lat2)) * + Math.sin(dLon / 2) * + Math.sin(dLon / 2); + + const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); + return earthRadius * c; +}; + +export { haversineDistance }; diff --git a/apps/driver-app/tsconfig.json b/apps/driver-app/tsconfig.json index ac69e9c..69a1b9b 100644 --- a/apps/driver-app/tsconfig.json +++ b/apps/driver-app/tsconfig.json @@ -14,5 +14,5 @@ "**/*.tsx", ".expo/types/**/*.ts", "expo-env.d.ts" - ] +, "../api/src/services/index.ts" ] } diff --git a/docker-compose.yml b/docker-compose.yml index 52fab70..a88f0b1 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,7 +5,7 @@ services: dockerfile: Dockerfile entrypoint: ['/bin/bash', '/app/entrypoint.sh'] ports: - - '3000:3000' + - '0.0.0.0:3000:3000' depends_on: - db - redis @@ -112,9 +112,9 @@ services: mqtt: image: eclipse-mosquitto ports: - - '1883:1883' - - '8883:8883' - - '9001:9001' + - '0.0.0.0:1883:1883' + - '0.0.0.0:8883:8883' + - '0.0.0.0:9001:9001' volumes: - ./apps/api/mosquitto.conf:/mosquitto/config/mosquitto.conf - mqtt_data:/mosquitto/data