import React, { useState } from 'react'; import { useSelector, useDispatch } from 'react-redux'; import { IconX, IconBug, IconFileText, IconCode, IconStack, IconBrandGithub } from '@tabler/icons'; import { clearSelectedError } from 'providers/ReduxStore/slices/logs'; import { useApp } from 'providers/App'; import platformLib from 'platform'; import StyledWrapper from './StyledWrapper'; const ErrorInfoTab = ({ error }) => { const { version } = useApp(); const formatTimestamp = (timestamp) => { const date = new Date(timestamp); return date.toLocaleString(); }; const generateGitHubIssueUrl = () => { const title = `Bug: ${error.message.substring(0, 50)}${error.message.length > 50 ? '...' : ''}`; const body = `## Bug Report ### Error Details - **Message**: ${error.message} - **File**: ${error.filename || 'Unknown'} - **Line**: ${error.lineno || 'Unknown'}:${error.colno || 'Unknown'} - **Timestamp**: ${formatTimestamp(error.timestamp)} ### Environment - **Bruno Version**: ${version} - **OS**: ${platformLib.os.family} ${platformLib.os.version || ''} - **Browser**: ${platformLib.name} ${platformLib.version || ''} ### Stack Trace \`\`\` ${error.stack || 'No stack trace available'} \`\`\` ### Arguments \`\`\` ${error.args ? error.args.map((arg, index) => { if (arg && typeof arg === 'object' && arg.__type === 'Error') { return `[${index}]: Error: ${arg.message}`; } return `[${index}]: ${typeof arg === 'object' ? JSON.stringify(arg, null, 2) : String(arg)}`; }).join('\n') : 'No arguments'} \`\`\` ### Steps to Reproduce 1. 2. 3. ### Expected Behavior ### Additional Context `; const encodedTitle = encodeURIComponent(title); const encodedBody = encodeURIComponent(body); return `https://github.com/usebruno/bruno/issues/new?template=BLANK_ISSUE&title=${encodedTitle}&body=${encodedBody}`; }; const handleReportIssue = () => { const url = generateGitHubIssueUrl(); window.open(url, '_blank'); }; return (
Found a bug? Help us improve Bruno by reporting this error on GitHub.
{formatStackTrace(error.stack)}
{formatArguments(error.args)}