import React from 'react'; import { connect } from 'react-redux'; import { getRE } from 'App/utils'; import { NoContent, Loader, Input, ErrorItem, SlideModal, ErrorDetails, Link, QuestionMarkHint, } from 'UI'; import { error as errorRoute } from 'App/routes'; import Autoscroll from '../Autoscroll'; import BottomBlock from '../BottomBlock'; import { MobilePlayerContext, PlayerContext } from 'App/components/Session/playerContext'; import { observer } from 'mobx-react-lite'; interface IProps { loading: boolean; sourcemapUploaded: boolean; errorStack: Record; } function MobileExceptionsCont() { const { player, store } = React.useContext(MobilePlayerContext); const { exceptionsList: exceptions = [] } = store.get(); const [filter, setFilter] = React.useState(''); const onFilterChange = ({ target: { value } }: any) => setFilter(value); const filterRE = getRE(filter, 'i'); const filtered = exceptions.filter((e: any) => filterRE.test(e.name) || filterRE.test(e.message)); return ( <>
Exceptions
{filtered.map((e: any, index) => ( player.jump(e.time)} error={e} /> ))}
); } function ExceptionsCont({ errorStack, sourcemapUploaded, loading }: IProps) { const { player, store } = React.useContext(PlayerContext); const { tabStates, currentTab } = store.get(); const { logListNow: logs = [], exceptionsList: exceptions = [] } = tabStates[currentTab] const [filter, setFilter] = React.useState(''); const [currentError, setCurrentErrorVal] = React.useState(null); const onFilterChange = ({ target: { value } }: any) => setFilter(value); const closeModal = () => setCurrentErrorVal(null); const filterRE = getRE(filter, 'i'); const filtered = exceptions.filter((e: any) => filterRE.test(e.name) || filterRE.test(e.message)); return ( <>
{currentError.name} {currentError.function}
{currentError.message}
) } isDisplayed={currentError != null} content={ currentError && (
) } onClose={closeModal} />
Exceptions
Upload Source Maps{' '} and see source code context obtained from stack traces in their original form. } />
{filtered.map((e: any, index) => ( player.jump(e.time)} error={e} /> ))}
); } export const Exceptions = connect((state: any) => ({ errorStack: state.getIn(['sessions', 'errorStack']), sourcemapUploaded: state.getIn(['sessions', 'sourcemapUploaded']), loading: state.getIn(['sessions', 'fetchErrorStackList', 'loading']), }))(observer(ExceptionsCont)); export const MobileExceptions = observer(MobileExceptionsCont)