import React, { useEffect } from 'react'; import { View, Text, ScrollView, ActivityIndicator } from 'react-native'; import { useRoute, useNavigation } from '@react-navigation/native'; import { StackNavigationProp } from '@react-navigation/stack'; import { RouteProp } from '@react-navigation/native'; import { Header, OrderStatusTimeline } from '@components'; import { useAppTheme } from '@theme'; import { getStyles } from './orderDetailsScreen.styles'; import { RootState, useAppDispatch, useAppSelector } from '@store'; import { getOrderByIdThunk } from '../checkoutPaymentScreen'; import { formatDate, formatTime } from '@utils/helper'; import { AppStackParamList } from '../../../navigation/appStack'; type OrderDetailsRouteProp = RouteProp; type OrderDetailsNavProp = StackNavigationProp; export const OrderDetailsScreen: React.FC = () => { const { colors } = useAppTheme(); const styles = getStyles(colors); const route = useRoute(); const navigation = useNavigation(); const dispatch = useAppDispatch(); const orderId = route.params?.orderId; const { orderDetails, orderDetailsLoading, orderDetailsError } = useAppSelector((state: RootState) => state.paymentMethods); useEffect(() => { if (orderId) { dispatch(getOrderByIdThunk(orderId)); } }, [dispatch, orderId]); if (orderDetailsLoading) { return (
navigation.goBack()} /> Fetching order details... ); } if (orderDetailsError || !orderDetails) { return (
navigation.goBack()} /> {orderDetailsError || 'Could not load order details.'} ); } const orderDate = orderDetails.createdAt ? `${formatDate(orderDetails.createdAt)} at ${formatTime( orderDetails.createdAt, )}` : ''; return (
navigation.goBack()} /> {/* Top Info Section */} Order {orderDetails.orderNumber?.split('-').pop() || ''} {orderDetails.status} Placed on {orderDate} Payment: {orderDetails.paymentMethod} {/* Merchant Info */} 🏪 {orderDetails.merchant?.name || 'Store'} {/* Order Status Timeline Section */} Order Status {/* Order Items Section */} Order Items {orderDetails.orderItems?.map((item, index) => ( {item.quantity}x {item.name} ₹{item.totalAmount} ))} {/* Bill Summary Section */} Bill Summary Item Total ₹{orderDetails.subtotal} Delivery Fee ₹{orderDetails.deliveryFee} Platform Fee ₹{orderDetails.platformFee} Taxes ₹{orderDetails.taxAmount} Grand Total ₹{orderDetails.totalAmount} {/* Delivery Address Section */} Delivery Details {orderDetails.dropAddress?.label || 'Home'} {orderDetails.dropAddress?.houseNumber ? `${orderDetails.dropAddress.houseNumber}, ` : ''} {orderDetails.dropAddress?.addressLine1} {orderDetails.dropAddress?.landmark ? `Landmark: ${orderDetails.dropAddress.landmark}` : ''} Phone: {orderDetails.dropAddress?.phone} {/* Payment Info */} {orderDetails.payments && orderDetails.payments.length > 0 && ( Payment Details 💳 Paid via {orderDetails.payments[0].method} ( {orderDetails.payments[0].status}) )} ); }; export default OrderDetailsScreen;