import React from 'react'; import { useSelector, useDispatch } from 'react-redux'; import { IconBug } from '@tabler/icons'; import { setSelectedError, clearDebugErrors } from 'providers/ReduxStore/slices/logs'; import StyledWrapper from './StyledWrapper'; const ErrorRow = ({ error, isSelected, onClick }) => { const formatTime = (timestamp) => { const date = new Date(timestamp); return date.toLocaleTimeString('en-US', { hour12: false, hour: '2-digit', minute: '2-digit', second: '2-digit', fractionalSecondDigits: 3 }); }; const getShortMessage = (message, maxLength = 80) => { if (!message) return 'Unknown error'; return message.length > maxLength ? message.substring(0, maxLength) + '...' : message; }; const getLocation = (error) => { if (error.filename) { const filename = error.filename.split('/').pop(); // Get just the filename if (error.lineno && error.colno) { return `${filename}:${error.lineno}:${error.colno}`; } else if (error.lineno) { return `${filename}:${error.lineno}`; } return filename; } return '-'; }; return (
{getShortMessage(error.message)}
{getLocation(error)}
{formatTime(error.timestamp)}
); }; const DebugTab = () => { const dispatch = useDispatch(); const { debugErrors, selectedError } = useSelector((state) => state.logs); const handleErrorClick = (error) => { dispatch(setSelectedError(error)); }; const handleClearErrors = () => { dispatch(clearDebugErrors()); }; return (
{debugErrors.length === 0 ? (

No errors

console.error() calls will appear here
) : (
Message
Location
Time
{debugErrors.map((error, index) => ( handleErrorClick(error)} /> ))}
)}
); }; export default DebugTab;