[FIX] App freezing if Markdown preview contains sequential empty spaces (#2726)
* Remove sequential empty spaces from Markdown preview * Use Markdown preview on RepliedThread
This commit is contained in:
parent
6a026235ba
commit
7c09112656
|
@ -10220,6 +10220,80 @@ exports[`Storyshots Markdown list Markdown 1`] = `
|
||||||
</Text>
|
</Text>
|
||||||
</Text>
|
</Text>
|
||||||
</View>
|
</View>
|
||||||
|
<Text
|
||||||
|
style={
|
||||||
|
Array [
|
||||||
|
Object {
|
||||||
|
"fontSize": 20,
|
||||||
|
"fontWeight": "300",
|
||||||
|
"marginLeft": 10,
|
||||||
|
"marginVertical": 30,
|
||||||
|
},
|
||||||
|
Object {
|
||||||
|
"color": "#0d0e12",
|
||||||
|
},
|
||||||
|
Object {
|
||||||
|
"marginHorizontal": 10,
|
||||||
|
"marginVertical": 10,
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
||||||
|
>
|
||||||
|
Sequential empty spaces
|
||||||
|
</Text>
|
||||||
|
<View
|
||||||
|
style={
|
||||||
|
Object {
|
||||||
|
"marginHorizontal": 15,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
>
|
||||||
|
<Text
|
||||||
|
style={
|
||||||
|
Array [
|
||||||
|
Object {
|
||||||
|
"backgroundColor": "transparent",
|
||||||
|
"fontFamily": "System",
|
||||||
|
"fontSize": 16,
|
||||||
|
"fontWeight": "400",
|
||||||
|
"textAlign": "left",
|
||||||
|
},
|
||||||
|
undefined,
|
||||||
|
Object {
|
||||||
|
"color": "#2f343d",
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
||||||
|
>
|
||||||
|
<Text
|
||||||
|
accessibilityLabel="a b c"
|
||||||
|
style={
|
||||||
|
Array [
|
||||||
|
Object {
|
||||||
|
"backgroundColor": "transparent",
|
||||||
|
"fontFamily": "System",
|
||||||
|
"fontSize": 16,
|
||||||
|
"fontWeight": "400",
|
||||||
|
"textAlign": "left",
|
||||||
|
},
|
||||||
|
Array [
|
||||||
|
Object {},
|
||||||
|
Object {
|
||||||
|
"alignItems": "flex-start",
|
||||||
|
"flexDirection": "row",
|
||||||
|
"flexWrap": "wrap",
|
||||||
|
"justifyContent": "flex-start",
|
||||||
|
"marginBottom": 0,
|
||||||
|
"marginTop": 0,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
]
|
||||||
|
}
|
||||||
|
>
|
||||||
|
a b c
|
||||||
|
</Text>
|
||||||
|
</Text>
|
||||||
|
</View>
|
||||||
<Text
|
<Text
|
||||||
style={
|
style={
|
||||||
Array [
|
Array [
|
||||||
|
@ -10382,6 +10456,26 @@ exports[`Storyshots Markdown list Markdown 1`] = `
|
||||||
>
|
>
|
||||||
a b c d e
|
a b c d e
|
||||||
</Text>
|
</Text>
|
||||||
|
<Text
|
||||||
|
accessibilityLabel="a b c"
|
||||||
|
numberOfLines={1}
|
||||||
|
style={
|
||||||
|
Array [
|
||||||
|
Object {
|
||||||
|
"backgroundColor": "transparent",
|
||||||
|
"fontFamily": "System",
|
||||||
|
"fontSize": 16,
|
||||||
|
"fontWeight": "400",
|
||||||
|
"textAlign": "left",
|
||||||
|
},
|
||||||
|
Object {
|
||||||
|
"color": "#2f343d",
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
||||||
|
>
|
||||||
|
a b c
|
||||||
|
</Text>
|
||||||
<Text
|
<Text
|
||||||
accessibilityLabel="@rocket.cat @name1 @all @here @unknown #general #unknown"
|
accessibilityLabel="@rocket.cat @name1 @all @here @unknown #general #unknown"
|
||||||
numberOfLines={1}
|
numberOfLines={1}
|
||||||
|
@ -17308,7 +17402,7 @@ exports[`Storyshots Message list message 1`] = `
|
||||||
"marginTop": 6,
|
"marginTop": 6,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
testID="message-thread-replied-on-Thread with emoji🙂 😂"
|
testID="message-thread-replied-on-Thread with emoji :) :joy:"
|
||||||
>
|
>
|
||||||
<Text
|
<Text
|
||||||
allowFontScaling={false}
|
allowFontScaling={false}
|
||||||
|
@ -17334,9 +17428,20 @@ exports[`Storyshots Message list message 1`] = `
|
||||||
|
|
||||||
</Text>
|
</Text>
|
||||||
<Text
|
<Text
|
||||||
|
accessibilityLabel="Thread with emoji🙂 😂"
|
||||||
numberOfLines={1}
|
numberOfLines={1}
|
||||||
style={
|
style={
|
||||||
Array [
|
Array [
|
||||||
|
Object {
|
||||||
|
"backgroundColor": "transparent",
|
||||||
|
"fontFamily": "System",
|
||||||
|
"fontSize": 16,
|
||||||
|
"fontWeight": "400",
|
||||||
|
"textAlign": "left",
|
||||||
|
},
|
||||||
|
Object {
|
||||||
|
"color": "#2f343d",
|
||||||
|
},
|
||||||
Object {
|
Object {
|
||||||
"backgroundColor": "transparent",
|
"backgroundColor": "transparent",
|
||||||
"flex": 1,
|
"flex": 1,
|
||||||
|
@ -33583,9 +33688,20 @@ exports[`Storyshots Message list message 1`] = `
|
||||||
|
|
||||||
</Text>
|
</Text>
|
||||||
<Text
|
<Text
|
||||||
|
accessibilityLabel="How are you?"
|
||||||
numberOfLines={1}
|
numberOfLines={1}
|
||||||
style={
|
style={
|
||||||
Array [
|
Array [
|
||||||
|
Object {
|
||||||
|
"backgroundColor": "transparent",
|
||||||
|
"fontFamily": "System",
|
||||||
|
"fontSize": 16,
|
||||||
|
"fontWeight": "400",
|
||||||
|
"textAlign": "left",
|
||||||
|
},
|
||||||
|
Object {
|
||||||
|
"color": "#2f343d",
|
||||||
|
},
|
||||||
Object {
|
Object {
|
||||||
"backgroundColor": "transparent",
|
"backgroundColor": "transparent",
|
||||||
"flex": 1,
|
"flex": 1,
|
||||||
|
@ -33786,7 +33902,7 @@ exports[`Storyshots Message list message 1`] = `
|
||||||
"marginTop": 6,
|
"marginTop": 6,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
testID="message-thread-replied-on-Thread with emoji🙂 😂"
|
testID="message-thread-replied-on-Thread with emoji :) :joy:"
|
||||||
>
|
>
|
||||||
<Text
|
<Text
|
||||||
allowFontScaling={false}
|
allowFontScaling={false}
|
||||||
|
@ -33812,9 +33928,20 @@ exports[`Storyshots Message list message 1`] = `
|
||||||
|
|
||||||
</Text>
|
</Text>
|
||||||
<Text
|
<Text
|
||||||
|
accessibilityLabel="Thread with emoji🙂 😂"
|
||||||
numberOfLines={1}
|
numberOfLines={1}
|
||||||
style={
|
style={
|
||||||
Array [
|
Array [
|
||||||
|
Object {
|
||||||
|
"backgroundColor": "transparent",
|
||||||
|
"fontFamily": "System",
|
||||||
|
"fontSize": 16,
|
||||||
|
"fontWeight": "400",
|
||||||
|
"textAlign": "left",
|
||||||
|
},
|
||||||
|
Object {
|
||||||
|
"color": "#2f343d",
|
||||||
|
},
|
||||||
Object {
|
Object {
|
||||||
"backgroundColor": "transparent",
|
"backgroundColor": "transparent",
|
||||||
"flex": 1,
|
"flex": 1,
|
||||||
|
@ -34015,7 +34142,7 @@ exports[`Storyshots Message list message 1`] = `
|
||||||
"marginTop": 6,
|
"marginTop": 6,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
testID="message-thread-replied-on-Markdown: link block code"
|
testID="message-thread-replied-on-Markdown: [link](http://www.google.com/) \`\`\`block code\`\`\`"
|
||||||
>
|
>
|
||||||
<Text
|
<Text
|
||||||
allowFontScaling={false}
|
allowFontScaling={false}
|
||||||
|
@ -34041,9 +34168,20 @@ exports[`Storyshots Message list message 1`] = `
|
||||||
|
|
||||||
</Text>
|
</Text>
|
||||||
<Text
|
<Text
|
||||||
|
accessibilityLabel="Markdown: link block code"
|
||||||
numberOfLines={1}
|
numberOfLines={1}
|
||||||
style={
|
style={
|
||||||
Array [
|
Array [
|
||||||
|
Object {
|
||||||
|
"backgroundColor": "transparent",
|
||||||
|
"fontFamily": "System",
|
||||||
|
"fontSize": 16,
|
||||||
|
"fontWeight": "400",
|
||||||
|
"textAlign": "left",
|
||||||
|
},
|
||||||
|
Object {
|
||||||
|
"color": "#2f343d",
|
||||||
|
},
|
||||||
Object {
|
Object {
|
||||||
"backgroundColor": "transparent",
|
"backgroundColor": "transparent",
|
||||||
"flex": 1,
|
"flex": 1,
|
||||||
|
@ -34270,9 +34408,20 @@ exports[`Storyshots Message list message 1`] = `
|
||||||
|
|
||||||
</Text>
|
</Text>
|
||||||
<Text
|
<Text
|
||||||
|
accessibilityLabel="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."
|
||||||
numberOfLines={1}
|
numberOfLines={1}
|
||||||
style={
|
style={
|
||||||
Array [
|
Array [
|
||||||
|
Object {
|
||||||
|
"backgroundColor": "transparent",
|
||||||
|
"fontFamily": "System",
|
||||||
|
"fontSize": 16,
|
||||||
|
"fontWeight": "400",
|
||||||
|
"textAlign": "left",
|
||||||
|
},
|
||||||
|
Object {
|
||||||
|
"color": "#2f343d",
|
||||||
|
},
|
||||||
Object {
|
Object {
|
||||||
"backgroundColor": "transparent",
|
"backgroundColor": "transparent",
|
||||||
"flex": 1,
|
"flex": 1,
|
||||||
|
@ -34499,9 +34648,20 @@ exports[`Storyshots Message list message 1`] = `
|
||||||
|
|
||||||
</Text>
|
</Text>
|
||||||
<Text
|
<Text
|
||||||
|
accessibilityLabel="How are you?"
|
||||||
numberOfLines={1}
|
numberOfLines={1}
|
||||||
style={
|
style={
|
||||||
Array [
|
Array [
|
||||||
|
Object {
|
||||||
|
"backgroundColor": "transparent",
|
||||||
|
"fontFamily": "System",
|
||||||
|
"fontSize": 16,
|
||||||
|
"fontWeight": "400",
|
||||||
|
"textAlign": "left",
|
||||||
|
},
|
||||||
|
Object {
|
||||||
|
"color": "#2f343d",
|
||||||
|
},
|
||||||
Object {
|
Object {
|
||||||
"backgroundColor": "transparent",
|
"backgroundColor": "transparent",
|
||||||
"flex": 1,
|
"flex": 1,
|
||||||
|
@ -34728,9 +34888,20 @@ exports[`Storyshots Message list message 1`] = `
|
||||||
|
|
||||||
</Text>
|
</Text>
|
||||||
<Text
|
<Text
|
||||||
|
accessibilityLabel="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."
|
||||||
numberOfLines={1}
|
numberOfLines={1}
|
||||||
style={
|
style={
|
||||||
Array [
|
Array [
|
||||||
|
Object {
|
||||||
|
"backgroundColor": "transparent",
|
||||||
|
"fontFamily": "System",
|
||||||
|
"fontSize": 16,
|
||||||
|
"fontWeight": "400",
|
||||||
|
"textAlign": "left",
|
||||||
|
},
|
||||||
|
Object {
|
||||||
|
"color": "#2f343d",
|
||||||
|
},
|
||||||
Object {
|
Object {
|
||||||
"backgroundColor": "transparent",
|
"backgroundColor": "transparent",
|
||||||
"flex": 1,
|
"flex": 1,
|
||||||
|
@ -34957,9 +35128,20 @@ exports[`Storyshots Message list message 1`] = `
|
||||||
|
|
||||||
</Text>
|
</Text>
|
||||||
<Text
|
<Text
|
||||||
|
accessibilityLabel="Thread with attachment"
|
||||||
numberOfLines={1}
|
numberOfLines={1}
|
||||||
style={
|
style={
|
||||||
Array [
|
Array [
|
||||||
|
Object {
|
||||||
|
"backgroundColor": "transparent",
|
||||||
|
"fontFamily": "System",
|
||||||
|
"fontSize": 16,
|
||||||
|
"fontWeight": "400",
|
||||||
|
"textAlign": "left",
|
||||||
|
},
|
||||||
|
Object {
|
||||||
|
"color": "#2f343d",
|
||||||
|
},
|
||||||
Object {
|
Object {
|
||||||
"backgroundColor": "transparent",
|
"backgroundColor": "transparent",
|
||||||
"flex": 1,
|
"flex": 1,
|
||||||
|
@ -36039,9 +36221,20 @@ exports[`Storyshots Message list message 1`] = `
|
||||||
|
|
||||||
</Text>
|
</Text>
|
||||||
<Text
|
<Text
|
||||||
|
accessibilityLabel="How are you?"
|
||||||
numberOfLines={1}
|
numberOfLines={1}
|
||||||
style={
|
style={
|
||||||
Array [
|
Array [
|
||||||
|
Object {
|
||||||
|
"backgroundColor": "transparent",
|
||||||
|
"fontFamily": "System",
|
||||||
|
"fontSize": 16,
|
||||||
|
"fontWeight": "400",
|
||||||
|
"textAlign": "left",
|
||||||
|
},
|
||||||
|
Object {
|
||||||
|
"color": "#2f343d",
|
||||||
|
},
|
||||||
Object {
|
Object {
|
||||||
"backgroundColor": "transparent",
|
"backgroundColor": "transparent",
|
||||||
"flex": 1,
|
"flex": 1,
|
||||||
|
|
|
@ -384,6 +384,8 @@ class Markdown extends PureComponent {
|
||||||
|
|
||||||
if (preview) {
|
if (preview) {
|
||||||
m = shortnameToUnicode(m);
|
m = shortnameToUnicode(m);
|
||||||
|
// Removes sequential empty spaces
|
||||||
|
m = m.replace(/\s+/g, ' ');
|
||||||
m = removeMarkdown(m);
|
m = removeMarkdown(m);
|
||||||
m = m.replace(/\n+/g, ' ');
|
m = m.replace(/\n+/g, ' ');
|
||||||
return (
|
return (
|
||||||
|
|
|
@ -1,13 +1,12 @@
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { View, Text } from 'react-native';
|
import { View } from 'react-native';
|
||||||
import removeMarkdown from 'remove-markdown';
|
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
|
|
||||||
import shortnameToUnicode from '../../utils/shortnameToUnicode';
|
|
||||||
import { CustomIcon } from '../../lib/Icons';
|
import { CustomIcon } from '../../lib/Icons';
|
||||||
import styles from './styles';
|
import styles from './styles';
|
||||||
import { themes } from '../../constants/colors';
|
import { themes } from '../../constants/colors';
|
||||||
import I18n from '../../i18n';
|
import I18n from '../../i18n';
|
||||||
|
import Markdown from '../markdown';
|
||||||
|
|
||||||
const RepliedThread = React.memo(({
|
const RepliedThread = React.memo(({
|
||||||
tmid, tmsg, isHeader, fetchThreadName, id, isEncrypted, theme
|
tmid, tmsg, isHeader, fetchThreadName, id, isEncrypted, theme
|
||||||
|
@ -21,8 +20,7 @@ const RepliedThread = React.memo(({
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
let msg = shortnameToUnicode(tmsg);
|
let msg = tmsg;
|
||||||
msg = removeMarkdown(msg);
|
|
||||||
|
|
||||||
if (isEncrypted) {
|
if (isEncrypted) {
|
||||||
msg = I18n.t('Encrypted_message');
|
msg = I18n.t('Encrypted_message');
|
||||||
|
@ -31,7 +29,13 @@ const RepliedThread = React.memo(({
|
||||||
return (
|
return (
|
||||||
<View style={styles.repliedThread} testID={`message-thread-replied-on-${ msg }`}>
|
<View style={styles.repliedThread} testID={`message-thread-replied-on-${ msg }`}>
|
||||||
<CustomIcon name='threads' size={20} style={styles.repliedThreadIcon} color={themes[theme].tintColor} />
|
<CustomIcon name='threads' size={20} style={styles.repliedThreadIcon} color={themes[theme].tintColor} />
|
||||||
<Text style={[styles.repliedThreadName, { color: themes[theme].tintColor }]} numberOfLines={1}>{msg}</Text>
|
<Markdown
|
||||||
|
msg={msg}
|
||||||
|
theme={theme}
|
||||||
|
style={[styles.repliedThreadName, { color: themes[theme].tintColor }]}
|
||||||
|
preview
|
||||||
|
numberOfLines={1}
|
||||||
|
/>
|
||||||
<View style={styles.repliedThreadDisclosure}>
|
<View style={styles.repliedThreadDisclosure}>
|
||||||
<CustomIcon
|
<CustomIcon
|
||||||
name='chevron-right'
|
name='chevron-right'
|
||||||
|
|
|
@ -26,6 +26,7 @@ d
|
||||||
|
|
||||||
|
|
||||||
e`;
|
e`;
|
||||||
|
const sequentialEmptySpacesText = 'a b c';
|
||||||
|
|
||||||
const getCustomEmoji = (content) => {
|
const getCustomEmoji = (content) => {
|
||||||
const customEmoji = {
|
const customEmoji = {
|
||||||
|
@ -69,6 +70,14 @@ export default ({ theme }) => {
|
||||||
/>
|
/>
|
||||||
</View>
|
</View>
|
||||||
|
|
||||||
|
<StoriesSeparator style={styles.separator} title='Sequential empty spaces' theme={theme} />
|
||||||
|
<View style={styles.container}>
|
||||||
|
<Markdown
|
||||||
|
msg={sequentialEmptySpacesText}
|
||||||
|
theme={theme}
|
||||||
|
/>
|
||||||
|
</View>
|
||||||
|
|
||||||
<StoriesSeparator style={styles.separator} title='Edited' theme={theme} />
|
<StoriesSeparator style={styles.separator} title='Edited' theme={theme} />
|
||||||
<View style={styles.container}>
|
<View style={styles.container}>
|
||||||
<Markdown
|
<Markdown
|
||||||
|
@ -92,6 +101,12 @@ export default ({ theme }) => {
|
||||||
numberOfLines={1}
|
numberOfLines={1}
|
||||||
preview
|
preview
|
||||||
/>
|
/>
|
||||||
|
<Markdown
|
||||||
|
msg={sequentialEmptySpacesText}
|
||||||
|
theme={theme}
|
||||||
|
numberOfLines={1}
|
||||||
|
preview
|
||||||
|
/>
|
||||||
<Markdown
|
<Markdown
|
||||||
msg='@rocket.cat @name1 @all @here @unknown #general #unknown'
|
msg='@rocket.cat @name1 @all @here @unknown #general #unknown'
|
||||||
theme={theme}
|
theme={theme}
|
||||||
|
|
Loading…
Reference in New Issue