"use client"; import React, { useRef, useEffect, useState } from "react"; import { useEvent } from "@/app/components/Realtime/contexts/EventContext"; import { LoggedEvent } from "@/app/components/Realtime/types"; export interface EventsProps { isExpanded: boolean; } function Events({ isExpanded }: EventsProps) { const [prevEventLogs, setPrevEventLogs] = useState([]); const eventLogsContainerRef = useRef(null); const { loggedEvents, toggleExpand } = useEvent(); const getDirectionArrow = (direction: string) => { if (direction === "client") return { symbol: "▲", color: "#7f5af0" }; if (direction === "server") return { symbol: "▼", color: "#2cb67d" }; return { symbol: "•", color: "#555" }; }; useEffect(() => { const hasNewEvent = loggedEvents.length > prevEventLogs.length; if (isExpanded && hasNewEvent && eventLogsContainerRef.current) { eventLogsContainerRef.current.scrollTop = eventLogsContainerRef.current.scrollHeight; } setPrevEventLogs(loggedEvents); }, [loggedEvents, isExpanded]); return (
{isExpanded && (
Logs
{loggedEvents.map((log) => { const arrowInfo = getDirectionArrow(log.direction); const isError = log.eventName.toLowerCase().includes("error") || log.eventData?.response?.status_details?.error != null; return (
toggleExpand(log.id)} className="flex items-center justify-between cursor-pointer" >
{arrowInfo.symbol} {log.eventName}
{log.timestamp}
{log.expanded && log.eventData && (
                        {JSON.stringify(log.eventData, null, 2)}
                      
)}
); })}
)}
); } export default Events;