"use client"; import { useEffect, useState } from "react"; import { useDeveloperFlags } from "@/components/developer-flags-provider"; type DebugEvent = { event: string; payload: Record; ts: number }; export function EventDebugPanel() { const { flags } = useDeveloperFlags(); const [open, setOpen] = useState(false); const [events, setEvents] = useState(() => { if (typeof window === "undefined") return []; return ((window.__DOWNLOAD_NOVA_TRACKS__ ?? []) as DebugEvent[]).slice(-20).reverse(); }); useEffect(() => { const handler = (e: Event) => { const custom = e as CustomEvent; setEvents((prev) => [custom.detail, ...prev].slice(0, 20)); }; window.addEventListener("download-nova-track", handler); return () => window.removeEventListener("download-nova-track", handler); }, []); if (process.env.NODE_ENV === "production" || !flags.eventDebug) return null; return (
{open && (

最近 20 条事件

{events.length === 0 &&

暂无事件

} {events.map((item, idx) => (

{item.event}

{new Date(item.ts).toLocaleTimeString()}

{JSON.stringify(item.payload)}
))}
)}
); }