/* eslint-disable @typescript-eslint/no-explicit-any */ "use client"; import React, { useState, useEffect } from "react"; import { useSearchParams, useRouter } from "next/navigation"; import Link from "next/link"; import Image from "next/image"; import { formatDate, formatTime, formatSpaceForText, } from "../../../lib/Helper"; import { getPublicOrderTracking } from "../../../Api/OrderApi"; import HourGlassLoader from "../../Loader/Loader"; export default function PublicOrderTracking() { const searchParams = useSearchParams(); const router = useRouter(); const [trackingId, setTrackingId] = useState( searchParams.get("tracking_id") || "", ); const [trackingHistory, setTrackingHistory] = useState([]); const [isLoading, setIsLoading] = useState(false); const [error, setError] = useState(null); const [hasSearched, setHasSearched] = useState(false); const fetchOrderDetails = async (id: string) => { if (!id) return; setIsLoading(true); setError(null); setHasSearched(true); try { const response = await getPublicOrderTracking(id); // The API returns an array of tracking events in 'data' if (Array.isArray(response) && response.length > 0) { // Sort by date descending (newest first) const sortedHistory = [...response].sort( (a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime(), ); setTrackingHistory(sortedHistory); } else { setTrackingHistory([]); setError("No order found with this tracking ID."); } } catch (err) { console.error("Error fetching order details:", err); setError("An error occurred while fetching order details."); } finally { setIsLoading(false); } }; useEffect(() => { const id = searchParams.get("tracking_id"); if (id) { setTrackingId(id); fetchOrderDetails(id); } }, [searchParams]); const handleSearch = (e: React.FormEvent) => { e.preventDefault(); if (trackingId.trim()) { router.push(`/track-order?tracking_id=${trackingId.trim()}`); fetchOrderDetails(trackingId.trim()); } }; return (
Delybell Logo
{/* Login */}
{isLoading && }

Track Order

Enter your tracking number to see the latest updates on your shipment.

setTrackingId(e.target.value)} />
{error && (
{error}
Please double-check your tracking ID and try again.
)} {trackingHistory.length > 0 && (

Shipment ID

{trackingId}

{formatSpaceForText(trackingHistory[0]?.status?.name) || "In Progress"}
{trackingHistory.map((item, index) => (
{index === 0 ? ( ) : ( )}
{formatDate(item.createdAt)}
{formatSpaceForText(item.status?.name)}
{item.trackingDetails}
{formatTime(item.createdAt)}
))}
)} {!isLoading && !error && trackingHistory.length === 0 && hasSearched && (
No results found
We couldn't find any tracking information for this ID.
)}
); }