import React, { useEffect, useRef } from "react"; import { useAppContext } from "../contexts/AppContext"; import { Button } from "@nextui-org/react"; const EVENT_START = 1720756800000; // midnight 7/12/2024 eastern /** * *oh god the terrible code* * * not sure of another clean way to do this * * This is used to show details about the event, immediately on page load * * used by the canvas preview page to get people hyped up for the event (<7 days before) */ export const EventInfoOverlay = ({ children }: React.PropsWithChildren) => { const { setInfoSidebar, setSettingsSidebar } = useAppContext(); const $countdown = useRef(null); const getCountdown = () => { // date math always confuses me... // https://stackoverflow.com/a/7709819 const now = Date.now(); const ms = EVENT_START - now; const days = Math.floor(ms / (1000 * 60 * 60 * 24)); const hours = Math.floor((ms % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)); const minutes = Math.floor( ((ms % (1000 * 60 * 60 * 24)) % (1000 * 60 * 60)) / (1000 * 60) ); const seconds = Math.round( (((ms % (1000 * 60 * 60 * 24)) % (1000 * 60 * 60)) % (1000 * 60)) / 1000 ); return [days, hours, minutes, seconds]; }; const updateTime = () => { if (!$countdown.current) return; const [days, hours, minutes, seconds] = getCountdown(); $countdown.current.innerText = [ days && days + "d", hours && hours + "h", minutes && minutes + "m", seconds && seconds + "s", ] .filter((a) => a) .join(" "); $countdown.current.title = `${days} days ${hours} hours ${minutes} minutes ${seconds} seconds`; }; useEffect(() => { var interval = setInterval(updateTime, 1000); updateTime(); return () => { clearInterval(interval); }; }, []); return (

Canvas 2024

($countdown.current = r)} className="text-3xl">

); };