mattermost-mobile/app/components/markdown/markdown_latex_inline/index.tsx
Daniel Espino García b4a3d7ff4d
Fix MM57562 (#7920)
* Fix MM57562

* fix: Add proper java version for android build

---------

Co-authored-by: Antonis Stamatiou <stamatiou.antonis@gmail.com>
2024-05-06 12:02:12 +02:00

73 lines
2.1 KiB
TypeScript

// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
import React from 'react';
import {useIntl} from 'react-intl';
import {Text, View, type DimensionValue} from 'react-native';
import ErrorBoundary from '@components/markdown/error_boundary';
import MathView from '@components/math_view';
import {makeStyleSheetFromTheme} from '@utils/theme';
import {typography} from '@utils/typography';
type Props = {
content: string;
maxMathWidth: DimensionValue;
theme: Theme;
}
type MathViewErrorProps = {
error: Error;
}
const getStyleSheet = makeStyleSheetFromTheme((theme: Theme) => {
return {
mathStyle: {
marginVertical: 3,
color: theme.centerChannelColor,
},
viewStyle: {
flexDirection: 'row',
flexWrap: 'wrap',
},
errorText: {
color: theme.errorTextColor,
flexDirection: 'row',
flexWrap: 'wrap',
fontStyle: 'italic',
...typography('Body', 100),
},
};
});
const LatexInline = ({content, maxMathWidth, theme}: Props) => {
const {formatMessage} = useIntl();
const style = getStyleSheet(theme);
const onRenderErrorMessage = (errorMsg: MathViewErrorProps) => {
const error = formatMessage({id: 'markdown.latex.error', defaultMessage: 'Latex render error'});
return <Text style={style.errorText}>{`${error}: ${errorMsg.error.message}`}</Text>;
};
return (
<ErrorBoundary
error={formatMessage({id: 'markdown.latex.error', defaultMessage: 'Latex render error'})}
theme={theme}
>
<View
style={style.viewStyle}
key={content}
testID='markdown_latex_inline'
>
<MathView
style={[style.mathStyle, {maxWidth: maxMathWidth || '100%'}]}
math={content}
renderError={onRenderErrorMessage}
resizeMode='contain'
/>
</View>
</ErrorBoundary>
);
};
export default LatexInline;