Fix link preview

This commit is contained in:
Alex Demchenko
2021-08-29 19:12:20 +02:00
parent 4202b1072c
commit 8406b46fda
2 changed files with 39 additions and 0 deletions

View File

@@ -47,6 +47,12 @@ export const TextMessage = ({
user,
})
const hanleEmailPress = (email: string) => {
try {
Linking.openURL(`mailto:${email}`)
} catch {}
}
const handlePreviewDataFetched = (data: PreviewData) => {
setPreviewData(data)
onPreviewDataFetched?.({ message, previewData: data })
@@ -79,6 +85,11 @@ export const TextMessage = ({
<ParsedText
accessibilityRole='link'
parse={[
{
onPress: hanleEmailPress,
style: [text, { textDecorationLine: 'underline' }],
type: 'email',
},
{
onPress: handleUrlPress,
pattern: REGEX_LINK,

View File

@@ -80,4 +80,32 @@ describe('text message', () => {
getPreviewDataMock.mockRestore()
openUrlMock.mockRestore()
})
it('renders and handles email press', async () => {
expect.assertions(1)
const email = 'john@flyer.chat'
const getPreviewDataMock = jest
.spyOn(utils, 'getPreviewData')
.mockResolvedValue({})
const openUrlMock = jest.spyOn(Linking, 'openURL')
const { getByText } = render(
<TextMessage
message={{
...derivedTextMessage,
author: { id: 'newUserId', firstName: 'John' },
text: email,
}}
messageWidth={440}
onPreviewDataFetched={jest.fn}
showName
usePreviewData
/>
)
await waitFor(() => getByText(email))
const text = getByText(email)
fireEvent.press(text)
expect(openUrlMock).toHaveBeenCalledWith(`mailto:${email}`)
getPreviewDataMock.mockRestore()
openUrlMock.mockRestore()
})
})