From 1ea35f5ec0a43fbf8331ef8afa9dc2266e91eed6 Mon Sep 17 00:00:00 2001 From: Andrew Lee Date: Sat, 31 May 2025 20:26:37 -0400 Subject: Add tracking page --- src/app/track/page.tsx | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 src/app/track/page.tsx (limited to 'src/app/track/page.tsx') diff --git a/src/app/track/page.tsx b/src/app/track/page.tsx new file mode 100644 index 0000000..b4978f3 --- /dev/null +++ b/src/app/track/page.tsx @@ -0,0 +1,80 @@ +'use client'; +import { useEffect, useState } from 'react' +import Search from './url' +import Header from '../components/Header' + +interface TrackData { + sender: string; + receiver: string; + express: boolean; + signature: boolean; + abandon: boolean; + delivered: boolean + country_code: string; + handler: string; + history: { info: string, location: string, time: string }[]; +} + +export default function Track() { + const [data, setData] = useState(null); + const params = Search(); + useEffect(() => { + async function fetchData() { + if (params == null) return; + + const res = await fetch(`https://haystack-khaki.vercel.app/api/pkg/${params}`); + const json = await res.json(); + + setData(json); + } + fetchData(); + }, [params]); + return ( + <> +
+
+
+
+ + +
+
+ {params ? ( + data ? ( +
+ {!data.abandon && !data.delivered && ( +
Package is in transit
+ )} + {data.signature && ( +
Signature is required when the package arrive
+ )} + {data.abandon && ( +
Package has been abandoned
+ )} + {data.delivered && ( +
Package has delivered
+ )} +
+

Origin: {data.sender}

+

Delivering to: {data.receiver}

+
+

Delivery progress

+
+ {[...data.history] + .sort((a, b) => new Date(b.time).getTime() - new Date(a.time).getTime()) + .map((history, idx) => ( +
+
{history.info}
+
{history.location}
+
{new Date(history.time).toLocaleString()}
+
+ ))} +
+ +
+ ) : "Loading..." + ) : null} +
+ + ) +} \ No newline at end of file -- cgit v1.2.3