import React from 'react'; import { getRE } from 'App/utils'; import { NoContent, Loader, Input, ErrorItem, SlideModal, ErrorDetails, Link, QuestionMarkHint, } from 'UI'; import { error as errorRoute } from 'App/routes'; import { useStore } from 'App/mstore'; import { MobilePlayerContext, PlayerContext, } from 'App/components/Session/playerContext'; import { observer } from 'mobx-react-lite'; import Autoscroll from '../Autoscroll'; import BottomBlock from '../BottomBlock'; import { useTranslation } from 'react-i18next'; interface IProps { loading: boolean; sourcemapUploaded: boolean; errorStack: Record; } function MobileExceptionsCont() { const { t } = useTranslation(); 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 (
{t('Exceptions')}
{filtered.map((e: any, index) => ( player.jump(e.time)} error={e} /> ))}
); } function ExceptionsCont() { const { t } = useTranslation(); const { sessionStore } = useStore(); const { errorStack } = sessionStore; const { sourcemapUploaded } = sessionStore; const loading = sessionStore.loadingSessionData; 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} />
{t('Exceptions')}
{t('Upload Source Maps')}{' '} {t( '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 = observer(ExceptionsCont); export const MobileExceptions = observer(MobileExceptionsCont);