From 61f81b04db4140be57be8e5f0b8ff3c1209117e2 Mon Sep 17 00:00:00 2001 From: Andrew Lee Date: Mon, 2 Jun 2025 16:41:11 -0400 Subject: fixed issue with suspense boundary --- src/app/track/page.tsx | 104 ++++++++++++++++++++++++++----------------------- 1 file changed, 56 insertions(+), 48 deletions(-) (limited to 'src') diff --git a/src/app/track/page.tsx b/src/app/track/page.tsx index 77fa81a..22d5722 100644 --- a/src/app/track/page.tsx +++ b/src/app/track/page.tsx @@ -1,5 +1,5 @@ 'use client'; -import { useEffect, useState } from 'react' +import { useEffect, useState, Suspense } from 'react' import Search from './url' import Header from '../components/Header' @@ -16,19 +16,7 @@ interface TrackData { } 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 ( <>
@@ -39,42 +27,62 @@ export default function Track() { - {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...
}> + + + + + ) +} +function TrackContent() { + 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]); + if (!params) return null; + if (!data) return
Loading...
; + return ( +
+ {!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