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)`}
);
}