feat(order): deliveryboy details added dynamically
This commit is contained in:
parent
da1feb91e4
commit
8c443d76eb
@ -4,4 +4,5 @@ export interface OrderStatusTimelineProps {
|
|||||||
tracking?: TrackingEntry[];
|
tracking?: TrackingEntry[];
|
||||||
currentStatus: OrderStatus;
|
currentStatus: OrderStatus;
|
||||||
styles?: any; // optional – component uses its own internal styles via useAppTheme
|
styles?: any; // optional – component uses its own internal styles via useAppTheme
|
||||||
|
deliveryPartner?: { name: string; phone: string; }
|
||||||
}
|
}
|
||||||
|
|||||||
@ -102,6 +102,7 @@ export const OrderStatusTimeline: React.FC<OrderStatusTimelineProps> = ({
|
|||||||
tracking = [],
|
tracking = [],
|
||||||
currentStatus,
|
currentStatus,
|
||||||
styles: propStyles,
|
styles: propStyles,
|
||||||
|
deliveryPartner,
|
||||||
}) => {
|
}) => {
|
||||||
const { colors } = useAppTheme();
|
const { colors } = useAppTheme();
|
||||||
const localStyles = getStyles(colors);
|
const localStyles = getStyles(colors);
|
||||||
@ -118,11 +119,11 @@ export const OrderStatusTimeline: React.FC<OrderStatusTimelineProps> = ({
|
|||||||
};
|
};
|
||||||
|
|
||||||
const handleCall = () => {
|
const handleCall = () => {
|
||||||
Linking.openURL('tel:+919876543210');
|
Linking.openURL(`tel:${deliveryPartner?.phone}`);
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleMessage = () => {
|
const handleMessage = () => {
|
||||||
Linking.openURL('sms:+919876543210');
|
Linking.openURL(`sms:${deliveryPartner?.phone}`);
|
||||||
};
|
};
|
||||||
|
|
||||||
const trackingMap = tracking.reduce<Record<string, string>>((acc, t) => {
|
const trackingMap = tracking.reduce<Record<string, string>>((acc, t) => {
|
||||||
@ -273,13 +274,13 @@ export const OrderStatusTimeline: React.FC<OrderStatusTimelineProps> = ({
|
|||||||
<View style={localStyles.driverSection}>
|
<View style={localStyles.driverSection}>
|
||||||
<View style={localStyles.driverInfoRow}>
|
<View style={localStyles.driverInfoRow}>
|
||||||
<View style={localStyles.driverAvatarContainer}>
|
<View style={localStyles.driverAvatarContainer}>
|
||||||
<Text style={localStyles.driverAvatarText}>RS</Text>
|
<Text style={localStyles.driverAvatarText}>{deliveryPartner?.name?.substring(0, 2)?.toUpperCase()}</Text>
|
||||||
</View>
|
</View>
|
||||||
<View style={localStyles.driverMeta}>
|
<View style={localStyles.driverMeta}>
|
||||||
<Text style={localStyles.driverRoleText}>Your Delivery Hero</Text>
|
<Text style={localStyles.driverRoleText}>Your Delivery Hero</Text>
|
||||||
<Text style={localStyles.driverNameText}>Rahul Sharma</Text>
|
<Text style={localStyles.driverNameText}>{deliveryPartner?.name}</Text>
|
||||||
<Text style={localStyles.driverVehicleText}>
|
<Text style={localStyles.driverVehicleText}>
|
||||||
KA-01-AB-1234 • Honda Activa
|
{deliveryPartner?.phone}
|
||||||
</Text>
|
</Text>
|
||||||
</View>
|
</View>
|
||||||
<View style={localStyles.ratingBadge}>
|
<View style={localStyles.ratingBadge}>
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
import React, { useEffect } from 'react';
|
import React, { useEffect } from 'react';
|
||||||
import { View, Text, ActivityIndicator } from 'react-native';
|
import { View, Text, ActivityIndicator, Linking } from 'react-native';
|
||||||
import { useNavigation, useRoute, RouteProp } from '@react-navigation/native';
|
import { useNavigation, useRoute, RouteProp } from '@react-navigation/native';
|
||||||
import { StackNavigationProp } from '@react-navigation/stack';
|
import { StackNavigationProp } from '@react-navigation/stack';
|
||||||
import { getStyles } from './liveTrackingScreen.styles';
|
import { getStyles } from './liveTrackingScreen.styles';
|
||||||
@ -52,6 +52,10 @@ export const LiveTrackingScreen: React.FC = () => {
|
|||||||
}
|
}
|
||||||
}, [orderStatus, navigation, orderId]);
|
}, [orderStatus, navigation, orderId]);
|
||||||
|
|
||||||
|
const handleCall = () => {
|
||||||
|
Linking.openURL(`tel:${orderDetails?.delivery?.deliveryPartner?.user?.phone}`);
|
||||||
|
};
|
||||||
|
|
||||||
if (orderDetailsLoading || !orderDetails) {
|
if (orderDetailsLoading || !orderDetails) {
|
||||||
return (
|
return (
|
||||||
<View style={styles.container}>
|
<View style={styles.container}>
|
||||||
@ -92,18 +96,18 @@ export const LiveTrackingScreen: React.FC = () => {
|
|||||||
}
|
}
|
||||||
style={{ marginBottom: 16 }}
|
style={{ marginBottom: 16 }}
|
||||||
/>
|
/>
|
||||||
<Text style={styles.agentName}>Rahul Sharma</Text>
|
<Text style={styles.agentName}>{orderDetails?.delivery?.deliveryPartner?.user?.name}</Text>
|
||||||
<Text style={styles.agentRating}>⭐ 4.8</Text>
|
<Text style={styles.agentRating}>⭐ 4.8</Text>
|
||||||
<Text style={styles.agentVehicle}>KA-01-AB-1234 • Honda Activa</Text>
|
<Text style={styles.agentVehicle}>{orderDetails?.delivery?.deliveryPartner?.user?.phone}</Text>
|
||||||
<View style={styles.agentActions}>
|
<View style={styles.agentActions}>
|
||||||
<PrimaryButton
|
<PrimaryButton
|
||||||
title="Call"
|
title="Call"
|
||||||
onPress={() => {}}
|
onPress={handleCall}
|
||||||
style={{ flex: 1, marginRight: 8 }}
|
style={{ flex: 1, marginRight: 8 }}
|
||||||
/>
|
/>
|
||||||
<PrimaryButton
|
<PrimaryButton
|
||||||
title="Message"
|
title="Message"
|
||||||
onPress={() => {}}
|
onPress={() => { }}
|
||||||
style={{ flex: 1, marginLeft: 8 }}
|
style={{ flex: 1, marginLeft: 8 }}
|
||||||
/>
|
/>
|
||||||
</View>
|
</View>
|
||||||
|
|||||||
@ -21,32 +21,32 @@ type MyOrdersNavProp = CompositeNavigationProp<
|
|||||||
>;
|
>;
|
||||||
|
|
||||||
const TABS = ['All', 'Ongoing', 'Completed'];
|
const TABS = ['All', 'Ongoing', 'Completed'];
|
||||||
const mockOrders = [
|
// const mockOrders = [
|
||||||
{
|
// {
|
||||||
id: 'ORD-591283',
|
// id: 'ORD-591283',
|
||||||
providerName: 'Pizza Planet',
|
// providerName: 'Pizza Planet',
|
||||||
providerImage: '',
|
// providerImage: '',
|
||||||
orderDate: '29 Jun 2026',
|
// orderDate: '29 Jun 2026',
|
||||||
status: 'Delivered',
|
// status: 'Delivered',
|
||||||
total: 599,
|
// total: 599,
|
||||||
},
|
// },
|
||||||
{
|
// {
|
||||||
id: 'ORD-771239',
|
// id: 'ORD-771239',
|
||||||
providerName: 'Fresh Mart',
|
// providerName: 'Fresh Mart',
|
||||||
providerImage: '',
|
// providerImage: '',
|
||||||
orderDate: '28 Jun 2026',
|
// orderDate: '28 Jun 2026',
|
||||||
status: 'Ongoing',
|
// status: 'Ongoing',
|
||||||
total: 349,
|
// total: 349,
|
||||||
},
|
// },
|
||||||
{
|
// {
|
||||||
id: 'ORD-108239',
|
// id: 'ORD-108239',
|
||||||
providerName: 'Burger Barn',
|
// providerName: 'Burger Barn',
|
||||||
providerImage: '',
|
// providerImage: '',
|
||||||
orderDate: '27 Jun 2026',
|
// orderDate: '27 Jun 2026',
|
||||||
status: 'Delivered',
|
// status: 'Delivered',
|
||||||
total: 449,
|
// total: 449,
|
||||||
},
|
// },
|
||||||
];
|
// ];
|
||||||
|
|
||||||
export const MyOrdersScreen: React.FC = () => {
|
export const MyOrdersScreen: React.FC = () => {
|
||||||
const { colors } = useAppTheme();
|
const { colors } = useAppTheme();
|
||||||
|
|||||||
@ -148,6 +148,7 @@ export const OrderDetailsScreen: React.FC = () => {
|
|||||||
<OrderStatusTimeline
|
<OrderStatusTimeline
|
||||||
tracking={orderDetails.tracking}
|
tracking={orderDetails.tracking}
|
||||||
currentStatus={orderDetails.status}
|
currentStatus={orderDetails.status}
|
||||||
|
deliveryPartner={orderDetails?.delivery?.deliveryPartner?.user}
|
||||||
/>
|
/>
|
||||||
</View>
|
</View>
|
||||||
|
|
||||||
|
|||||||
@ -161,6 +161,22 @@ export interface Delivery {
|
|||||||
proofOfDeliveryKey: string | null;
|
proofOfDeliveryKey: string | null;
|
||||||
pickedUpAt: string | null;
|
pickedUpAt: string | null;
|
||||||
deliveredAt: string | null;
|
deliveredAt: string | null;
|
||||||
|
deliveryPartner: {
|
||||||
|
id: string,
|
||||||
|
userId: string,
|
||||||
|
partnerCode: string,
|
||||||
|
kycStatus: string,
|
||||||
|
status: string,
|
||||||
|
availabilityStatus: string,
|
||||||
|
rating: number,
|
||||||
|
currentLatitude: number,
|
||||||
|
currentLongitude: number,
|
||||||
|
lastLocationAt: string,
|
||||||
|
user: {
|
||||||
|
name: string,
|
||||||
|
phone: string
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// export interface Merchant {
|
// export interface Merchant {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user