import React, { useEffect, useState } from 'react'; import ErrorFrame from '../ErrorFrame/ErrorFrame'; import { fetchErrorStackList } from 'Duck/sessions'; import { Button, Icon } from 'UI'; import { connect } from 'react-redux'; const docLink = 'https://docs.openreplay.com/installation/upload-sourcemaps'; interface Props { fetchErrorStackList: any; sourcemapUploaded?: boolean; errorStack?: any; message?: string; sessionId: string; error: any; } function ErrorDetails(props: Props) { const { error, sessionId, message = '', errorStack = [], sourcemapUploaded = false } = props; const [showRaw, setShowRaw] = useState(false); const firstFunc = errorStack.first() && errorStack.first().function; const openDocs = () => { window.open(docLink, '_blank'); }; useEffect(() => { if (sessionId) { props.fetchErrorStackList(sessionId, error.errorId); } }, []); return (
{!sourcemapUploaded && (
Source maps must be uploaded to OpenReplay to be able to see stack traces.{' '} Learn more.
)}

Stacktrace

{error.name}
{message}
{showRaw && (
{error.name} : {firstFunc ? firstFunc : '?'}
)} {errorStack.map((frame: any, i: any) => (
))}
); } ErrorDetails.displayName = 'ErrorDetails'; export default connect( (state: any) => ({ // errorStack: state.getIn(['sessions', 'errorStack']), errorStack: state.getIn(['errors', 'instanceTrace']), sessionId: state.getIn(['sessions', 'current']).sessionId, }), { fetchErrorStackList } )(ErrorDetails);