import { useLocalSearchParams, router } from "expo-router"; import { useEffect } from "react"; import { View } from "react-native"; import MapView, { Marker } from "@/components/maps/AppMap"; import { Badge } from "@/components/ui/Badge"; import { Button } from "@/components/ui/Button"; import { Card, InfoRow } from "@/components/ui/Card"; import { AppHeader } from "@/components/ui/Header"; import { Screen } from "@/components/ui/Screen"; import { Text } from "@/components/ui/Text"; import { getBranchById } from "@/lib/data/branches"; import { routes } from "@/lib/routes"; import { useOrdersStore } from "@/lib/stores/ordersStore"; import { colors, gutter } from "@/lib/theme"; import { formatETB } from "@/lib/utils"; export default function TrackingScreen() { const { id } = useLocalSearchParams<{ id: string }>(); const order = useOrdersStore((s) => s.orders.find((o) => o.id === id)); const updateStatus = useOrdersStore((s) => s.updateStatus); const branch = order?.branchId ? getBranchById(order.branchId) : undefined; useEffect(() => { if (!order) return; if (order.fulfillment === "pickup") return; if (order.riderAssigned || order.status === "cancelled" || order.status === "delivered") { return; } if (order.status === "paid" || order.status === "confirmed") { const t = setTimeout(() => updateStatus(order.id, "dispatched"), 2500); return () => clearTimeout(t); } }, [order?.id, order?.status, order?.fulfillment]); if (!order) { return ( Order not found. ); } const lat = branch?.lat ?? 9.03; const lng = branch?.lng ?? 38.74; const isPickup = order.fulfillment === "pickup"; return ( } /> {!isPickup && order.riderAssigned ? ( ) : null} {isPickup ? order.status === "delivered" || order.status === "completed" ? "Collected" : "Ready for pickup soon" : order.riderAssigned ? "Rider on the way" : "Preparing your order"} {isPickup ? `${branch?.name ?? "Branch"} · ${branch?.hours ?? ""} · ${branch?.area ?? order.areaLabel}` : `${order.areaLabel ?? "Addis Ababa"} · ETA 25–40 min (mock)`}