import { useEffect, useState } from "react"; import { Icon } from "@iconify/react"; import { useSearchParams } from "react-router"; interface ApiResponse { message: string; } function RedirectBanner() { const [searchParams] = useSearchParams(); const from = searchParams.get("from"); if (from !== "old-domain") return null; return (
We have moved URLs, welcome to tomodachishare.com!
); } export default function AdminBanner() { const [message, setMessage] = useState(null); const [shouldShow, setShouldShow] = useState(false); useEffect(() => { fetch(`${import.meta.env.VITE_API_URL}/api/admin/banner`) .then((res) => { if (!res.ok) throw new Error("Failed to get admin banner"); return res.json() as Promise; }) .then((data) => { if (!data.message) return; const closedBanner = localStorage.getItem("closedBanner"); setMessage(data.message); setShouldShow(data.message !== closedBanner); }) .catch((err) => { console.error(err); }); }, []); const handleClose = () => { if (!message) return; // Close banner and remember it localStorage.setItem("closedBanner", message); setShouldShow(false); }; return ( <> {shouldShow && message && (
{message}
)} ); }