fix: add suspense to redirect banner
This commit is contained in:
parent
62ab328fa2
commit
737f808fec
1 changed files with 22 additions and 10 deletions
|
|
@ -1,6 +1,8 @@
|
||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import { useSearchParams } from "next/navigation";
|
import { useSearchParams } from "next/navigation";
|
||||||
|
import { Suspense } from "react";
|
||||||
|
|
||||||
import useSWR from "swr";
|
import useSWR from "swr";
|
||||||
import { Icon } from "@iconify/react";
|
import { Icon } from "@iconify/react";
|
||||||
|
|
||||||
|
|
@ -10,23 +12,33 @@ interface ApiResponse {
|
||||||
|
|
||||||
const fetcher = (url: string) => fetch(url).then((res) => res.json());
|
const fetcher = (url: string) => fetch(url).then((res) => res.json());
|
||||||
|
|
||||||
const Banner = ({ icon, message }: { icon: string; message: string }) => (
|
function RedirectBanner() {
|
||||||
<div className="w-full h-10 bg-orange-300 border-y-2 border-y-orange-400 mt-1 shadow-md flex justify-center items-center gap-2 text-orange-900 text-nowrap overflow-x-auto font-semibold max-sm:justify-start">
|
|
||||||
<Icon icon={icon} className="text-2xl min-w-6" />
|
|
||||||
<span>{message}</span>
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
|
|
||||||
export default function AdminBanner() {
|
|
||||||
const searchParams = useSearchParams();
|
const searchParams = useSearchParams();
|
||||||
const from = searchParams.get("from");
|
const from = searchParams.get("from");
|
||||||
|
if (from !== "old-domain") return null;
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className="w-full h-10 bg-orange-300 border-y-2 border-y-orange-400 mt-1 shadow-md flex justify-center items-center gap-2 text-orange-900 text-nowrap overflow-x-auto font-semibold max-sm:justify-start">
|
||||||
|
<Icon icon="humbleicons:link" className="text-2xl min-w-6" />
|
||||||
|
<span>We have moved URLs, welcome to tomodachishare.com!</span>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default function AdminBanner() {
|
||||||
const { data } = useSWR<ApiResponse>("/api/admin/banner", fetcher);
|
const { data } = useSWR<ApiResponse>("/api/admin/banner", fetcher);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
{data && data.message && <Banner icon="humbleicons:exclamation" message={data.message} />}
|
{data && data.message && (
|
||||||
{from == "old-domain" && <Banner icon="humbleicons:link" message="We have moved URLs, welcome to tomodachishare.com!" />}
|
<div className="w-full h-10 bg-orange-300 border-y-2 border-y-orange-400 mt-1 shadow-md flex justify-center items-center gap-2 text-orange-900 text-nowrap overflow-x-auto font-semibold max-sm:justify-start">
|
||||||
|
<Icon icon="humbleicons:exclamation" className="text-2xl min-w-6" />
|
||||||
|
<span>{data.message}</span>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
<Suspense>
|
||||||
|
<RedirectBanner />
|
||||||
|
</Suspense>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue