diff --git a/android/app/src/main/assets/fonts/Inter-Bold_italic.otf b/android/app/src/main/assets/fonts/Inter-Bold_italic.otf new file mode 100644 index 00000000000..20d20c195cd Binary files /dev/null and b/android/app/src/main/assets/fonts/Inter-Bold_italic.otf differ diff --git a/android/app/src/main/assets/fonts/Inter-Medium_italic.otf b/android/app/src/main/assets/fonts/Inter-Medium_italic.otf new file mode 100644 index 00000000000..2df62bc189f Binary files /dev/null and b/android/app/src/main/assets/fonts/Inter-Medium_italic.otf differ diff --git a/android/app/src/main/assets/fonts/Inter-Regular_italic.otf b/android/app/src/main/assets/fonts/Inter-Regular_italic.otf new file mode 100644 index 00000000000..39d6016be45 Binary files /dev/null and b/android/app/src/main/assets/fonts/Inter-Regular_italic.otf differ diff --git a/android/app/src/main/assets/fonts/Inter-SemiBold_italic.otf b/android/app/src/main/assets/fonts/Inter-SemiBold_italic.otf new file mode 100644 index 00000000000..bc58b80d70b Binary files /dev/null and b/android/app/src/main/assets/fonts/Inter-SemiBold_italic.otf differ diff --git a/app/containers/UIKit/__snapshots__/UiKitMessage.test.tsx.snap b/app/containers/UIKit/__snapshots__/UiKitMessage.test.tsx.snap index 0f6da409f65..bf295d7ee2a 100644 --- a/app/containers/UIKit/__snapshots__/UiKitMessage.test.tsx.snap +++ b/app/containers/UIKit/__snapshots__/UiKitMessage.test.tsx.snap @@ -1084,9 +1084,17 @@ exports[`Story Snapshots: InfoCard should match snapshot 1`] = ` { "color": "#2F343D", }, - { - "fontSize": 14, - }, + [ + { + "fontSize": 14, + }, + { + "backgroundColor": "transparent", + "fontFamily": "Inter", + "fontWeight": "700", + "textAlign": "left", + }, + ], ] } > @@ -1187,9 +1195,17 @@ exports[`Story Snapshots: InfoCard should match snapshot 1`] = ` { "color": "#2F343D", }, - { - "fontSize": 14, - }, + [ + { + "fontSize": 14, + }, + { + "backgroundColor": "transparent", + "fontFamily": "Inter", + "fontWeight": "700", + "textAlign": "left", + }, + ], ] } > @@ -1357,9 +1373,17 @@ exports[`Story Snapshots: InfoCard should match snapshot 1`] = ` { "color": "#2F343D", }, - { - "fontSize": 14, - }, + [ + { + "fontSize": 14, + }, + { + "backgroundColor": "transparent", + "fontFamily": "Inter", + "fontWeight": "700", + "textAlign": "left", + }, + ], ] } > @@ -1460,9 +1484,17 @@ exports[`Story Snapshots: InfoCard should match snapshot 1`] = ` { "color": "#2F343D", }, - { - "fontSize": 14, - }, + [ + { + "fontSize": 14, + }, + { + "backgroundColor": "transparent", + "fontFamily": "Inter", + "fontWeight": "700", + "textAlign": "left", + }, + ], ] } > @@ -1630,9 +1662,17 @@ exports[`Story Snapshots: InfoCard should match snapshot 1`] = ` { "color": "#2F343D", }, - { - "fontSize": 14, - }, + [ + { + "fontSize": 14, + }, + { + "backgroundColor": "transparent", + "fontFamily": "Inter", + "fontWeight": "700", + "textAlign": "left", + }, + ], ] } > @@ -1800,9 +1840,17 @@ exports[`Story Snapshots: InfoCard should match snapshot 1`] = ` { "color": "#2F343D", }, - { - "fontSize": 14, - }, + [ + { + "fontSize": 14, + }, + { + "backgroundColor": "transparent", + "fontFamily": "Inter", + "fontWeight": "700", + "textAlign": "left", + }, + ], ] } > @@ -1980,9 +2028,17 @@ exports[`Story Snapshots: InfoCard should match snapshot 1`] = ` { "color": "#C1C7D0", }, - { - "fontSize": 14, - }, + [ + { + "fontSize": 14, + }, + { + "backgroundColor": "transparent", + "fontFamily": "Inter", + "fontWeight": "700", + "textAlign": "left", + }, + ], ] } > @@ -2083,9 +2139,17 @@ exports[`Story Snapshots: InfoCard should match snapshot 1`] = ` { "color": "#C1C7D0", }, - { - "fontSize": 14, - }, + [ + { + "fontSize": 14, + }, + { + "backgroundColor": "transparent", + "fontFamily": "Inter", + "fontWeight": "700", + "textAlign": "left", + }, + ], ] } > @@ -2253,9 +2317,17 @@ exports[`Story Snapshots: InfoCard should match snapshot 1`] = ` { "color": "#C1C7D0", }, - { - "fontSize": 14, - }, + [ + { + "fontSize": 14, + }, + { + "backgroundColor": "transparent", + "fontFamily": "Inter", + "fontWeight": "700", + "textAlign": "left", + }, + ], ] } > @@ -2356,9 +2428,17 @@ exports[`Story Snapshots: InfoCard should match snapshot 1`] = ` { "color": "#C1C7D0", }, - { - "fontSize": 14, - }, + [ + { + "fontSize": 14, + }, + { + "backgroundColor": "transparent", + "fontFamily": "Inter", + "fontWeight": "700", + "textAlign": "left", + }, + ], ] } > @@ -2526,9 +2606,17 @@ exports[`Story Snapshots: InfoCard should match snapshot 1`] = ` { "color": "#C1C7D0", }, - { - "fontSize": 14, - }, + [ + { + "fontSize": 14, + }, + { + "backgroundColor": "transparent", + "fontFamily": "Inter", + "fontWeight": "700", + "textAlign": "left", + }, + ], ] } > @@ -2696,9 +2784,17 @@ exports[`Story Snapshots: InfoCard should match snapshot 1`] = ` { "color": "#C1C7D0", }, - { - "fontSize": 14, - }, + [ + { + "fontSize": 14, + }, + { + "backgroundColor": "transparent", + "fontFamily": "Inter", + "fontWeight": "700", + "textAlign": "left", + }, + ], ] } > @@ -2876,9 +2972,17 @@ exports[`Story Snapshots: InfoCard should match snapshot 1`] = ` { "color": "#E4E7EA", }, - { - "fontSize": 14, - }, + [ + { + "fontSize": 14, + }, + { + "backgroundColor": "transparent", + "fontFamily": "Inter", + "fontWeight": "700", + "textAlign": "left", + }, + ], ] } > @@ -2979,9 +3083,17 @@ exports[`Story Snapshots: InfoCard should match snapshot 1`] = ` { "color": "#E4E7EA", }, - { - "fontSize": 14, - }, + [ + { + "fontSize": 14, + }, + { + "backgroundColor": "transparent", + "fontFamily": "Inter", + "fontWeight": "700", + "textAlign": "left", + }, + ], ] } > @@ -3149,9 +3261,17 @@ exports[`Story Snapshots: InfoCard should match snapshot 1`] = ` { "color": "#E4E7EA", }, - { - "fontSize": 14, - }, + [ + { + "fontSize": 14, + }, + { + "backgroundColor": "transparent", + "fontFamily": "Inter", + "fontWeight": "700", + "textAlign": "left", + }, + ], ] } > @@ -3252,9 +3372,17 @@ exports[`Story Snapshots: InfoCard should match snapshot 1`] = ` { "color": "#E4E7EA", }, - { - "fontSize": 14, - }, + [ + { + "fontSize": 14, + }, + { + "backgroundColor": "transparent", + "fontFamily": "Inter", + "fontWeight": "700", + "textAlign": "left", + }, + ], ] } > @@ -3422,9 +3550,17 @@ exports[`Story Snapshots: InfoCard should match snapshot 1`] = ` { "color": "#E4E7EA", }, - { - "fontSize": 14, - }, + [ + { + "fontSize": 14, + }, + { + "backgroundColor": "transparent", + "fontFamily": "Inter", + "fontWeight": "700", + "textAlign": "left", + }, + ], ] } > @@ -3592,9 +3728,17 @@ exports[`Story Snapshots: InfoCard should match snapshot 1`] = ` { "color": "#E4E7EA", }, - { - "fontSize": 14, - }, + [ + { + "fontSize": 14, + }, + { + "backgroundColor": "transparent", + "fontFamily": "Inter", + "fontWeight": "700", + "textAlign": "left", + }, + ], ] } > @@ -3717,9 +3861,17 @@ exports[`Story Snapshots: InfoCardI18n should match snapshot 1`] = ` { "color": "#2F343D", }, - { - "fontSize": 14, - }, + [ + { + "fontSize": 14, + }, + { + "backgroundColor": "transparent", + "fontFamily": "Inter", + "fontWeight": "700", + "textAlign": "left", + }, + ], ] } > @@ -3820,9 +3972,17 @@ exports[`Story Snapshots: InfoCardI18n should match snapshot 1`] = ` { "color": "#2F343D", }, - { - "fontSize": 14, - }, + [ + { + "fontSize": 14, + }, + { + "backgroundColor": "transparent", + "fontFamily": "Inter", + "fontWeight": "700", + "textAlign": "left", + }, + ], ] } > @@ -3923,9 +4083,17 @@ exports[`Story Snapshots: InfoCardI18n should match snapshot 1`] = ` { "color": "#2F343D", }, - { - "fontSize": 14, - }, + [ + { + "fontSize": 14, + }, + { + "backgroundColor": "transparent", + "fontFamily": "Inter", + "fontWeight": "700", + "textAlign": "left", + }, + ], ] } > @@ -4026,9 +4194,17 @@ exports[`Story Snapshots: InfoCardI18n should match snapshot 1`] = ` { "color": "#2F343D", }, - { - "fontSize": 14, - }, + [ + { + "fontSize": 14, + }, + { + "backgroundColor": "transparent", + "fontFamily": "Inter", + "fontWeight": "700", + "textAlign": "left", + }, + ], ] } > @@ -5173,9 +5349,17 @@ exports[`Story Snapshots: SectionMarkdownList should match snapshot 1`] = ` { "color": "#2F343D", }, - { - "fontSize": 14, - }, + [ + { + "fontSize": 14, + }, + { + "backgroundColor": "transparent", + "fontFamily": "Inter", + "fontWeight": "700", + "textAlign": "left", + }, + ], ] } > diff --git a/app/containers/UIKit/__snapshots__/UiKitModal.test.tsx.snap b/app/containers/UIKit/__snapshots__/UiKitModal.test.tsx.snap index a098c73ec9f..b8f3b3830cf 100644 --- a/app/containers/UIKit/__snapshots__/UiKitModal.test.tsx.snap +++ b/app/containers/UIKit/__snapshots__/UiKitModal.test.tsx.snap @@ -883,9 +883,17 @@ exports[`Story Snapshots: ModalActionsWithShowMore should match snapshot 1`] = ` { "color": "#2F343D", }, - { - "fontSize": 14, - }, + [ + { + "fontSize": 14, + }, + { + "backgroundColor": "transparent", + "fontFamily": "Inter", + "fontWeight": "700", + "textAlign": "left", + }, + ], ] } > @@ -1774,9 +1782,17 @@ exports[`Story Snapshots: ModalActionsWithShowMore should match snapshot 1`] = ` { "color": "#2F343D", }, - { - "fontSize": 14, - }, + [ + { + "fontSize": 14, + }, + { + "backgroundColor": "transparent", + "fontFamily": "Inter", + "fontWeight": "700", + "textAlign": "left", + }, + ], ] } > @@ -1825,9 +1841,17 @@ exports[`Story Snapshots: ModalActionsWithShowMore should match snapshot 1`] = ` { "color": "#2F343D", }, - { - "fontSize": 14, - }, + [ + { + "fontSize": 14, + }, + { + "backgroundColor": "transparent", + "fontFamily": "Inter", + "fontWeight": "700", + "textAlign": "left", + }, + ], ] } > @@ -3843,9 +3867,17 @@ exports[`Story Snapshots: ModalImages should match snapshot 1`] = ` { "color": "#2F343D", }, - { - "fontSize": 14, - }, + [ + { + "fontSize": 14, + }, + { + "backgroundColor": "transparent", + "fontFamily": "Inter", + "fontWeight": "700", + "textAlign": "left", + }, + ], ] } > @@ -5043,9 +5075,17 @@ exports[`Story Snapshots: ModalSectionAccessories should match snapshot 1`] = ` { "color": "#2F343D", }, - { - "fontSize": 14, - }, + [ + { + "fontSize": 14, + }, + { + "backgroundColor": "transparent", + "fontFamily": "Inter", + "fontWeight": "700", + "textAlign": "left", + }, + ], ] } > @@ -5144,9 +5184,17 @@ exports[`Story Snapshots: ModalSectionAccessories should match snapshot 1`] = ` { "color": "#2F343D", }, - { - "fontSize": 14, - }, + [ + { + "fontSize": 14, + }, + { + "backgroundColor": "transparent", + "fontFamily": "Inter", + "fontWeight": "700", + "textAlign": "left", + }, + ], ] } > @@ -5245,9 +5293,17 @@ exports[`Story Snapshots: ModalSectionAccessories should match snapshot 1`] = ` { "color": "#2F343D", }, - { - "fontSize": 14, - }, + [ + { + "fontSize": 14, + }, + { + "backgroundColor": "transparent", + "fontFamily": "Inter", + "fontWeight": "700", + "textAlign": "left", + }, + ], ] } > @@ -5407,9 +5463,17 @@ exports[`Story Snapshots: ModalSectionAccessories should match snapshot 1`] = ` { "color": "#2F343D", }, - { - "fontSize": 14, - }, + [ + { + "fontSize": 14, + }, + { + "backgroundColor": "transparent", + "fontFamily": "Inter", + "fontWeight": "700", + "textAlign": "left", + }, + ], ] } > @@ -5548,9 +5612,17 @@ exports[`Story Snapshots: ModalSectionAccessories should match snapshot 1`] = ` { "color": "#2F343D", }, - { - "fontSize": 14, - }, + [ + { + "fontSize": 14, + }, + { + "backgroundColor": "transparent", + "fontFamily": "Inter", + "fontWeight": "700", + "textAlign": "left", + }, + ], ] } > @@ -5689,9 +5761,17 @@ exports[`Story Snapshots: ModalSectionAccessories should match snapshot 1`] = ` { "color": "#2F343D", }, - { - "fontSize": 14, - }, + [ + { + "fontSize": 14, + }, + { + "backgroundColor": "transparent", + "fontFamily": "Inter", + "fontWeight": "700", + "textAlign": "left", + }, + ], ] } > @@ -5830,9 +5910,17 @@ exports[`Story Snapshots: ModalSectionAccessories should match snapshot 1`] = ` { "color": "#2F343D", }, - { - "fontSize": 14, - }, + [ + { + "fontSize": 14, + }, + { + "backgroundColor": "transparent", + "fontFamily": "Inter", + "fontWeight": "700", + "textAlign": "left", + }, + ], ] } > @@ -5976,9 +6064,17 @@ exports[`Story Snapshots: ModalSectionSelects should match snapshot 1`] = ` { "color": "#2F343D", }, - { - "fontSize": 14, - }, + [ + { + "fontSize": 14, + }, + { + "backgroundColor": "transparent", + "fontFamily": "Inter", + "fontWeight": "700", + "textAlign": "left", + }, + ], ] } > @@ -6203,9 +6299,17 @@ exports[`Story Snapshots: ModalSectionSelects should match snapshot 1`] = ` { "color": "#2F343D", }, - { - "fontSize": 14, - }, + [ + { + "fontSize": 14, + }, + { + "backgroundColor": "transparent", + "fontFamily": "Inter", + "fontWeight": "700", + "textAlign": "left", + }, + ], ] } > @@ -6339,9 +6443,17 @@ exports[`Story Snapshots: ModalSectionSelects should match snapshot 1`] = ` { "color": "#2F343D", }, - { - "fontSize": 14, - }, + [ + { + "fontSize": 14, + }, + { + "backgroundColor": "transparent", + "fontFamily": "Inter", + "fontWeight": "700", + "textAlign": "left", + }, + ], ] } > @@ -6488,9 +6600,17 @@ exports[`Story Snapshots: ModalSectionSelects should match snapshot 1`] = ` { "color": "#2F343D", }, - { - "fontSize": 14, - }, + [ + { + "fontSize": 14, + }, + { + "backgroundColor": "transparent", + "fontFamily": "Inter", + "fontWeight": "700", + "textAlign": "left", + }, + ], ] } > @@ -6624,9 +6744,17 @@ exports[`Story Snapshots: ModalSectionSelects should match snapshot 1`] = ` { "color": "#2F343D", }, - { - "fontSize": 14, - }, + [ + { + "fontSize": 14, + }, + { + "backgroundColor": "transparent", + "fontFamily": "Inter", + "fontWeight": "700", + "textAlign": "left", + }, + ], ] } > diff --git a/app/containers/markdown/Markdown.stories.tsx b/app/containers/markdown/Markdown.stories.tsx index fb9b7fa94c1..9a5b4a6161e 100644 --- a/app/containers/markdown/Markdown.stories.tsx +++ b/app/containers/markdown/Markdown.stories.tsx @@ -75,6 +75,7 @@ const mentions = [ { _id: 'all', username: 'all', type: 'user' }, { _id: 'team', name: 'team', type: 'team' } ]; +const channels = [{ _id: '123', name: 'test-channel' }]; export const Mentions = () => ( @@ -83,9 +84,44 @@ export const Mentions = () => ( ); +export const MentionsWithFormatting = () => ( + + + + + + + +); + export const Hashtag = () => ( - + ); @@ -131,6 +167,35 @@ export const Headers = () => ( ); +export const HeadersWithFormatting = () => ( + + + + + + +); + export const Code = () => ( @@ -175,7 +240,7 @@ export const TextStyle = () => ( textStyle={textStyle} /> - + This is block quote this is a normal line`} diff --git a/app/containers/markdown/__snapshots__/Markdown.test.tsx.snap b/app/containers/markdown/__snapshots__/Markdown.test.tsx.snap index 009e5615a36..5756d2d0cd9 100644 --- a/app/containers/markdown/__snapshots__/Markdown.test.tsx.snap +++ b/app/containers/markdown/__snapshots__/Markdown.test.tsx.snap @@ -1112,6 +1112,7 @@ exports[`Story Snapshots: Headers should match snapshot 1`] = ` "fontFamily": "Inter", "fontSize": 24, "fontWeight": "700", + "lineHeight": 30, "textAlign": "left", }, { @@ -1120,7 +1121,31 @@ exports[`Story Snapshots: Headers should match snapshot 1`] = ` ] } > - Header 1 + + Header 1 + - Header 2 + + Header 2 + - Header 3 + + Header 3 + - Header 4 - - - -`; - -exports[`Story Snapshots: Image should match snapshot 1`] = ` - - - - + "color": "#2F343D", + }, + { + "backgroundColor": "transparent", + "fontFamily": "Inter", + "fontSize": 18, + "fontWeight": "600", + "lineHeight": 24, + "textAlign": "left", + }, + ] + } + > + Header 4 `; -exports[`Story Snapshots: Links should match snapshot 1`] = ` +exports[`Story Snapshots: HeadersWithFormatting should match snapshot 1`] = ` + + H1 + - Markdown link + bold + + + + + - : - - - - [description](url) - + italic - - - - + + + - Formatted Link - - - : - - - - <url|description> - + strike - - - - - - Markdown link - - - and the text with default style - + - - - - - - Markdown link - - - and the text continues on the next line + + code + + + + + + 🚀 + + + + + + rocket.cat + + + + + + test-channel + + + + + + https://rocket.chat + - -`; - -exports[`Story Snapshots: Lists should match snapshot 1`] = ` - - - + + H2 + + - • - - - - - Open Source - - + bold - - + + + + - • - - - - - Rocket.Chat - - + italic - - - + - - - nodejs - + - - - - ReactNative + strike - - - - - - + + + + + code + + + + + + + + 🚀 + + + + + + rocket.cat + + + + + + test-channel + + + + + + https://rocket.chat + + + + + + + H3 + + + + bold + + + + + + + + italic + + + + + + + + strike + + + + + + + + code + + + + + + + + 🚀 + + + + + + rocket.cat + + + + + + test-channel + + + + + + https://rocket.chat + + + + + + + H4 + + + + bold + + + + + + + + italic + + + + + + + + strike + + + + + + + + code + + + + + + + + 🚀 + + + + + + rocket.cat + + + + + + test-channel + + + + + + https://rocket.chat + + + + +`; + +exports[`Story Snapshots: Image should match snapshot 1`] = ` + + + + + + + + + +`; + +exports[`Story Snapshots: Links should match snapshot 1`] = ` + + + + + + Markdown link + + + : + + + + [description](url) + + + + + + + + + + Formatted Link + + + : + + + + <url|description> + + + + + + + + + + Markdown link + + + and the text with default style + + + + + + + + + Markdown link + + + and the text continues on the next line + + + + + +`; + +exports[`Story Snapshots: Lists should match snapshot 1`] = ` + + + + + + • + + + + + Open Source + + + + + + + • + + + + + Rocket.Chat + + + + + + + + + - nodejs + + + + + + + - ReactNative + + + + + + + + + 1 + . + + + + + Open Source + + + + + + + 2 + . + + + + + Rocket.Chat + + + + + + + + + + + • + + + + + + bold + + + + + + + + + + + • + + + + + + italic + + + + + + + + + + + • + + + + + + strikethrough + + + + + + + + + + + • + + + + + + + bold italic + + + + + + + + + + + + • + + + + + + + bold strikethrough + + + + + + + + + + + + • + + + + + + + italic strikethrough + + + + + + + + + + + + • + + - 1 - . + + + + + + bold italic strikethrough + + + + + + + + + + +`; + +exports[`Story Snapshots: Mentions should match snapshot 1`] = ` + + + + + + + rocket.cat + + + + + + name1 + + + + + + all + + + + + + here + + + + + + @unknown + + + + + + team + + + + + + + + + Rocket Cat + + + + + + Name + + + + + + all + + + + + + here + + + + + + @unknown + + + + + + team + + + + + +`; + +exports[`Story Snapshots: MentionsWithFormatting should match snapshot 1`] = ` + + + + + Normal: + + + rocket.cat + + - - Open Source - + + + + name1 + + + + + + all + + + + + + here + + + + + + test-channel - - + + + - 2 - . - - + + Bold: + - Rocket.Chat + rocket.cat - - - - - - - - - • - - + + + - - bold - + name1 + + + + + - + all - - - - - • - - + + + + } + } + > + + here + + + + + - - italic - - - - + test-channel - - + + + - • - - + + Italic: + - - strikethrough - + + + + rocket.cat - - - - - • - - + + + - + - - bold italic - - + }, + { + "color": "#8E6300", + }, + ] + } + > + name1 - - - - - • - - + + + - + - - bold strikethrough - - + "backgroundColor": "transparent", + "fontFamily": "Inter", + "fontSize": 16, + "fontWeight": "600", + "textAlign": "left", + }, + { + "color": "#974809", + }, + ] + } + > + all - - - - - • - - + + + + + + - - - italic strikethrough - - + here - - - - - • - - + + + - + - - - bold italic strikethrough - - - + }, + { + "color": "#095AD2", + }, + ] + } + > + test-channel + + + - + - - -`; - -exports[`Story Snapshots: Mentions should match snapshot 1`] = ` - - - rocket.cat - - - - - - name1 - - - + Strikethrough: - all + + rocket.cat + - here + + name1 + + + all + + + - @unknown + + + + + here + - team + + test-channel + @@ -3121,26 +6574,7 @@ exports[`Story Snapshots: Mentions should match snapshot 1`] = ` } > - Rocket Cat - - - - - - Name + Italic + Bold + Strikethrough: - - - - all + "textDecorationLine": "line-through", + } + } + > + + + rocket.cat + + + - here + + + + name1 + + + + + + + all + + + + + - @unknown + + + + + + + here + + + - team + + + + test-channel + + + @@ -4007,6 +7607,12 @@ exports[`Story Snapshots: Text should match snapshot 1`] = ` { "color": "#2F343D", }, + { + "backgroundColor": "transparent", + "fontFamily": "Inter", + "fontWeight": "700", + "textAlign": "left", + }, ] } > @@ -4143,6 +7749,12 @@ exports[`Story Snapshots: Text should match snapshot 1`] = ` { "color": "#2F343D", }, + { + "backgroundColor": "transparent", + "fontFamily": "Inter", + "fontWeight": "700", + "textAlign": "left", + }, ] } > @@ -4196,6 +7808,12 @@ exports[`Story Snapshots: Text should match snapshot 1`] = ` { "color": "#2F343D", }, + { + "backgroundColor": "transparent", + "fontFamily": "Inter", + "fontWeight": "700", + "textAlign": "left", + }, ] } > @@ -4256,6 +7874,12 @@ exports[`Story Snapshots: Text should match snapshot 1`] = ` { "color": "#2F343D", }, + { + "backgroundColor": "transparent", + "fontFamily": "Inter", + "fontWeight": "700", + "textAlign": "left", + }, ] } > @@ -4408,10 +8032,18 @@ exports[`Story Snapshots: TextStyle should match snapshot 1`] = ` { "color": "#2F343D", }, - { - "color": "red", - "fontSize": 10, - }, + [ + { + "color": "red", + "fontSize": 10, + }, + { + "backgroundColor": "transparent", + "fontFamily": "Inter", + "fontWeight": "700", + "textAlign": "left", + }, + ], ] } > @@ -4568,10 +8200,18 @@ exports[`Story Snapshots: TextStyle should match snapshot 1`] = ` { "color": "#2F343D", }, - { - "color": "red", - "fontSize": 10, - }, + [ + { + "color": "red", + "fontSize": 10, + }, + { + "backgroundColor": "transparent", + "fontFamily": "Inter", + "fontWeight": "700", + "textAlign": "left", + }, + ], ] } > @@ -4629,10 +8269,18 @@ exports[`Story Snapshots: TextStyle should match snapshot 1`] = ` { "color": "#2F343D", }, - { - "color": "red", - "fontSize": 10, - }, + [ + { + "color": "red", + "fontSize": 10, + }, + { + "backgroundColor": "transparent", + "fontFamily": "Inter", + "fontWeight": "700", + "textAlign": "left", + }, + ], ] } > @@ -4697,10 +8345,18 @@ exports[`Story Snapshots: TextStyle should match snapshot 1`] = ` { "color": "#2F343D", }, - { - "color": "red", - "fontSize": 10, - }, + [ + { + "color": "red", + "fontSize": 10, + }, + { + "backgroundColor": "transparent", + "fontFamily": "Inter", + "fontWeight": "700", + "textAlign": "left", + }, + ], ] } > diff --git a/app/containers/markdown/components/Heading.tsx b/app/containers/markdown/components/Heading.tsx index b4b3cae3618..262d8174bc8 100644 --- a/app/containers/markdown/components/Heading.tsx +++ b/app/containers/markdown/components/Heading.tsx @@ -1,29 +1,63 @@ +import { type ReactElement } from 'react'; import { Text } from 'react-native'; import { type Heading as HeadingProps } from '@rocket.chat/message-parser'; import { themes } from '../../../lib/constants/colors'; import styles from '../styles'; import { useTheme } from '../../../theme'; +import { AtMention, Hashtag } from './mentions'; +import { Emoji } from './emoji'; +import { Bold, Italic, Link, Strike } from './inline/index'; +import Plain from './Plain'; +import InlineCode from './InlineCode'; +import Image from './Image'; +import MarkdownContext, { useMarkdownContext } from '../contexts/MarkdownContext'; +import Timestamp from './Timestamp'; interface IHeadingProps { value: HeadingProps['value']; level: HeadingProps['level']; } -const Heading = ({ value, level }: IHeadingProps) => { +const Heading = ({ value, level }: IHeadingProps): ReactElement => { + 'use memo'; + const { theme } = useTheme(); const textStyle = styles[`heading${level}`]; + const context = useMarkdownContext({ textStyle }); return ( - {value.map(block => { - switch (block.type) { - case 'PLAIN_TEXT': - return block.value; - default: - return null; - } - })} + + {value.map((block, index) => { + switch (block.type) { + case 'IMAGE': + return ; + case 'PLAIN_TEXT': + return ; + case 'BOLD': + return ; + case 'STRIKE': + return ; + case 'ITALIC': + return ; + case 'LINK': + return ; + case 'MENTION_USER': + return ; + case 'EMOJI': + return ; + case 'MENTION_CHANNEL': + return ; + case 'INLINE_CODE': + return ; + case 'TIMESTAMP': + return ; + default: + return null; + } + })} + ); }; diff --git a/app/containers/markdown/components/Inline.tsx b/app/containers/markdown/components/Inline.tsx index 284a8193ef9..98034445d2a 100644 --- a/app/containers/markdown/components/Inline.tsx +++ b/app/containers/markdown/components/Inline.tsx @@ -1,4 +1,4 @@ -import { useContext, type ReactElement } from 'react'; +import { type ReactElement } from 'react'; import { Text } from 'react-native'; import { type Paragraph as ParagraphProps } from '@rocket.chat/message-parser'; @@ -9,7 +9,6 @@ import { Bold, Italic, Link, Strike } from './inline/index'; import Plain from './Plain'; import InlineCode from './InlineCode'; import Image from './Image'; -import MarkdownContext from '../contexts/MarkdownContext'; import Timestamp from './Timestamp'; // import { InlineKaTeX, KaTeX } from './Katex'; @@ -19,7 +18,6 @@ interface IParagraphProps { } const Inline = ({ value, forceTrim }: IParagraphProps): ReactElement | null => { - const { useRealName, username, navToRoomInfo, mentions, channels } = useContext(MarkdownContext); return ( {value.map((block, index) => { @@ -53,19 +51,11 @@ const Inline = ({ value, forceTrim }: IParagraphProps): ReactElement | null => { case 'LINK': return ; case 'MENTION_USER': - return ( - - ); + return ; case 'EMOJI': return ; case 'MENTION_CHANNEL': - return ; + return ; case 'INLINE_CODE': return ; case 'INLINE_KATEX': diff --git a/app/containers/markdown/components/inline/Bold.tsx b/app/containers/markdown/components/inline/Bold.tsx index f1717ed62fd..e5ed5706441 100644 --- a/app/containers/markdown/components/inline/Bold.tsx +++ b/app/containers/markdown/components/inline/Bold.tsx @@ -3,7 +3,9 @@ import { type Bold as BoldProps } from '@rocket.chat/message-parser'; import { Italic, Link, Strike } from './index'; import Plain from '../Plain'; +import { Hashtag, AtMention } from '../mentions'; import sharedStyles from '../../../../views/Styles'; +import MarkdownContext, { useMarkdownContext } from '../../contexts/MarkdownContext'; interface IBoldProps { value: BoldProps['value']; @@ -15,25 +17,35 @@ const styles = StyleSheet.create({ } }); -const Bold = ({ value }: IBoldProps) => ( - - {value.map(block => { - switch (block.type) { - case 'LINK': - return ; - case 'PLAIN_TEXT': - return ; - case 'STRIKE': - return ; - case 'ITALIC': - return ; - case 'MENTION_CHANNEL': - return ; - default: - return null; - } - })} - -); +const Bold = ({ value }: IBoldProps) => { + 'use memo'; + + const context = useMarkdownContext({ textStyle: sharedStyles.textBold }); + + return ( + + + {value.map(block => { + switch (block.type) { + case 'LINK': + return ; + case 'PLAIN_TEXT': + return ; + case 'STRIKE': + return ; + case 'ITALIC': + return ; + case 'MENTION_CHANNEL': + return ; + case 'MENTION_USER': + return ; + default: + return null; + } + })} + + + ); +}; export default Bold; diff --git a/app/containers/markdown/components/inline/Italic.tsx b/app/containers/markdown/components/inline/Italic.tsx index a65dc96d7f1..fd50f902e80 100644 --- a/app/containers/markdown/components/inline/Italic.tsx +++ b/app/containers/markdown/components/inline/Italic.tsx @@ -3,6 +3,7 @@ import { type Italic as ItalicProps } from '@rocket.chat/message-parser'; import { Bold, Link, Strike } from './index'; import Plain from '../Plain'; +import { AtMention, Hashtag } from '../mentions'; interface IItalicProps { value: ItalicProps['value']; @@ -14,25 +15,31 @@ const styles = StyleSheet.create({ } }); -const Italic = ({ value }: IItalicProps) => ( - - {value.map(block => { - switch (block.type) { - case 'LINK': - return ; - case 'PLAIN_TEXT': - return ; - case 'STRIKE': - return ; - case 'BOLD': - return ; - case 'MENTION_CHANNEL': - return ; - default: - return null; - } - })} - -); +const Italic = ({ value }: IItalicProps) => { + 'use memo'; + + return ( + + {value.map(block => { + switch (block.type) { + case 'LINK': + return ; + case 'PLAIN_TEXT': + return ; + case 'STRIKE': + return ; + case 'BOLD': + return ; + case 'MENTION_CHANNEL': + return ; + case 'MENTION_USER': + return ; + default: + return null; + } + })} + + ); +}; export default Italic; diff --git a/app/containers/markdown/components/inline/Strike.tsx b/app/containers/markdown/components/inline/Strike.tsx index 362d3c1d11f..8364768a553 100644 --- a/app/containers/markdown/components/inline/Strike.tsx +++ b/app/containers/markdown/components/inline/Strike.tsx @@ -3,6 +3,7 @@ import { type Strike as StrikeProps } from '@rocket.chat/message-parser'; import { Bold, Italic, Link } from './index'; import Plain from '../Plain'; +import { AtMention, Hashtag } from '../mentions'; interface IStrikeProps { value: StrikeProps['value']; @@ -14,25 +15,31 @@ const styles = StyleSheet.create({ } }); -const Strike = ({ value }: IStrikeProps) => ( - - {value.map(block => { - switch (block.type) { - case 'LINK': - return ; - case 'PLAIN_TEXT': - return ; - case 'BOLD': - return ; - case 'ITALIC': - return ; - case 'MENTION_CHANNEL': - return ; - default: - return null; - } - })} - -); +const Strike = ({ value }: IStrikeProps) => { + 'use memo'; + + return ( + + {value.map(block => { + switch (block.type) { + case 'LINK': + return ; + case 'PLAIN_TEXT': + return ; + case 'BOLD': + return ; + case 'ITALIC': + return ; + case 'MENTION_CHANNEL': + return ; + case 'MENTION_USER': + return ; + default: + return null; + } + })} + + ); +}; export default Strike; diff --git a/app/containers/markdown/components/mentions/AtMention.tsx b/app/containers/markdown/components/mentions/AtMention.tsx index bb454b7bbd2..27c3b8ccac6 100644 --- a/app/containers/markdown/components/mentions/AtMention.tsx +++ b/app/containers/markdown/components/mentions/AtMention.tsx @@ -6,21 +6,16 @@ import { themes } from '../../../../lib/constants/colors'; import { USER_MENTIONS_PREFERENCES_KEY } from '../../../../lib/constants/keys'; import styles from '../../styles'; import { events, logEvent } from '../../../../lib/methods/helpers/log'; -import { type IUserMention } from '../../interfaces'; import { useUserPreferences } from '../../../../lib/methods/userPreferences'; import MarkdownContext from '../../contexts/MarkdownContext'; interface IAtMention { mention: string; - username?: string; - navToRoomInfo?: Function; - useRealName?: boolean; - mentions?: IUserMention[]; } -const AtMention = memo(({ mention, mentions, username, navToRoomInfo, useRealName }: IAtMention) => { +const AtMention = memo(({ mention }: IAtMention) => { const { theme } = useTheme(); - const { textStyle } = useContext(MarkdownContext); + const { textStyle, username, navToRoomInfo, useRealName, mentions } = useContext(MarkdownContext); const [mentionsWithAtSymbol] = useUserPreferences(USER_MENTIONS_PREFERENCES_KEY, false); const preffix = mentionsWithAtSymbol ? '@' : ''; if (mention === 'all' || mention === 'here') { diff --git a/app/containers/markdown/components/mentions/Hashtag.tsx b/app/containers/markdown/components/mentions/Hashtag.tsx index 3336998369c..44259738c9a 100644 --- a/app/containers/markdown/components/mentions/Hashtag.tsx +++ b/app/containers/markdown/components/mentions/Hashtag.tsx @@ -12,19 +12,16 @@ import { goRoom } from '../../../../lib/methods/helpers/goRoom'; import { getRoomInfo } from '../../../../lib/services/restApi'; import { useTheme } from '../../../../theme'; import { sendLoadingEvent } from '../../../Loading'; -import { type IUserChannel } from '../../interfaces'; import styles from '../../styles'; import MarkdownContext from '../../contexts/MarkdownContext'; interface IHashtag { hashtag: string; - navToRoomInfo?: Function; - channels?: IUserChannel[]; } -const Hashtag = memo(({ hashtag, channels, navToRoomInfo }: IHashtag) => { +const Hashtag = memo(({ hashtag }: IHashtag) => { const { theme } = useTheme(); - const { textStyle } = useContext(MarkdownContext); + const { textStyle, channels, navToRoomInfo } = useContext(MarkdownContext); const [roomsWithHashTagSymbol] = useUserPreferences(ROOM_MENTIONS_PREFERENCES_KEY, false); const isMasterDetail = useMasterDetail(); const preffix = roomsWithHashTagSymbol ? '#' : ''; diff --git a/app/containers/markdown/contexts/MarkdownContext.ts b/app/containers/markdown/contexts/MarkdownContext.ts index ee58ef1c1cd..cbcdcf7ca69 100644 --- a/app/containers/markdown/contexts/MarkdownContext.ts +++ b/app/containers/markdown/contexts/MarkdownContext.ts @@ -1,4 +1,4 @@ -import { createContext } from 'react'; +import { createContext, useContext } from 'react'; import { type StyleProp, type TextStyle } from 'react-native'; import { type IUserMention, type IUserChannel } from '../interfaces'; @@ -23,4 +23,23 @@ const defaultState = { }; const MarkdownContext = createContext(defaultState); + +export const useMarkdownContext = (overrides?: Partial): IMarkdownContext => { + const context = useContext(MarkdownContext); + if (!overrides) return context; + + // Merge the context and overrides + const newContext = { ...context, ...overrides }; + + // Deep merge textStyle if both exist + if (context.textStyle && overrides.textStyle) { + newContext.textStyle = [ + ...(Array.isArray(context.textStyle) ? context.textStyle : [context.textStyle]), + ...(Array.isArray(overrides.textStyle) ? overrides.textStyle : [overrides.textStyle]) + ]; + } + + return newContext; +}; + export default MarkdownContext; diff --git a/app/containers/markdown/styles.ts b/app/containers/markdown/styles.ts index 761d27a505f..c3e85b92a8c 100644 --- a/app/containers/markdown/styles.ts +++ b/app/containers/markdown/styles.ts @@ -97,27 +97,33 @@ export default StyleSheet.create({ }, heading1: { ...sharedStyles.textBold, - fontSize: 24 + fontSize: 24, + lineHeight: 30 }, heading2: { ...sharedStyles.textBold, - fontSize: 22 + fontSize: 22, + lineHeight: 28 }, heading3: { ...sharedStyles.textSemibold, - fontSize: 20 + fontSize: 20, + lineHeight: 26 }, heading4: { ...sharedStyles.textSemibold, - fontSize: 18 + fontSize: 18, + lineHeight: 24 }, heading5: { ...sharedStyles.textMedium, - fontSize: 16 + fontSize: 16, + lineHeight: 22 }, heading6: { ...sharedStyles.textMedium, - fontSize: 14 + fontSize: 14, + lineHeight: 20 }, quote: { height: '100%', diff --git a/app/containers/message/components/__tests__/__snapshots__/Message.test.tsx.snap b/app/containers/message/components/__tests__/__snapshots__/Message.test.tsx.snap index 4b0bda15861..674d94dd4b5 100644 --- a/app/containers/message/components/__tests__/__snapshots__/Message.test.tsx.snap +++ b/app/containers/message/components/__tests__/__snapshots__/Message.test.tsx.snap @@ -52653,6 +52653,12 @@ exports[`Story Snapshots: FileAttachmentsWithFilenames should match snapshot 1`] { "color": "#2F343D", }, + { + "backgroundColor": "transparent", + "fontFamily": "Inter", + "fontWeight": "700", + "textAlign": "left", + }, ] } > @@ -55567,6 +55573,12 @@ exports[`Story Snapshots: FileAttachmentsWithFilenamesLargeFont should match sna { "color": "#2F343D", }, + { + "backgroundColor": "transparent", + "fontFamily": "Inter", + "fontWeight": "700", + "textAlign": "left", + }, ] } > @@ -94559,6 +94571,12 @@ exports[`Story Snapshots: MessageWithReplyAndFile should match snapshot 1`] = ` { "color": "#2F343D", }, + { + "backgroundColor": "transparent", + "fontFamily": "Inter", + "fontWeight": "700", + "textAlign": "left", + }, ] } > @@ -96651,6 +96669,12 @@ exports[`Story Snapshots: MessageWithReplyAndFileLargeFont should match snapshot { "color": "#2F343D", }, + { + "backgroundColor": "transparent", + "fontFamily": "Inter", + "fontWeight": "700", + "textAlign": "left", + }, ] } > @@ -129525,6 +129549,12 @@ exports[`Story Snapshots: ShowButtonAsAttachment should match snapshot 1`] = ` { "color": "#2F343D", }, + { + "backgroundColor": "transparent", + "fontFamily": "Inter", + "fontWeight": "700", + "textAlign": "left", + }, ] } > @@ -130765,6 +130795,12 @@ exports[`Story Snapshots: ShowButtonAsAttachmentLargeFont should match snapshot { "color": "#2F343D", }, + { + "backgroundColor": "transparent", + "fontFamily": "Inter", + "fontWeight": "700", + "textAlign": "left", + }, ] } > @@ -149944,6 +149980,12 @@ exports[`Story Snapshots: TwoShortCustomFieldsWithMarkdown should match snapshot { "color": "#2F343D", }, + { + "backgroundColor": "transparent", + "fontFamily": "Inter", + "fontWeight": "700", + "textAlign": "left", + }, ] } > @@ -151131,6 +151173,12 @@ exports[`Story Snapshots: TwoShortCustomFieldsWithMarkdownLargeFont should match { "color": "#2F343D", }, + { + "backgroundColor": "transparent", + "fontFamily": "Inter", + "fontWeight": "700", + "textAlign": "left", + }, ] } > diff --git a/jest.config.js b/jest.config.js index aa5e3a720c6..8dcdf6d5a6f 100644 --- a/jest.config.js +++ b/jest.config.js @@ -2,7 +2,7 @@ module.exports = { modulePathIgnorePatterns: ['/.*worktrees/'], testPathIgnorePatterns: ['e2e', 'node_modules', '/.*worktrees/', '/__tests__/testHelpers\\.tsx$'], transformIgnorePatterns: [ - 'node_modules/(?!((jest-)?react-native|@react-native(-community)?)|expo(nent)?|@expo(nent)?/.*|@expo-google-fonts/.*|react-navigation|@react-navigation/.*|@unimodules/.*|unimodules|sentry-expo|native-base|react-native-svg|@rocket.chat/ui-kit|@rocket.chat/sdk|tiny-events)' + 'node_modules/(?!((jest-)?react-native|@react-native(-community)?)|expo(nent)?|@expo(nent)?/.*|@expo-google-fonts/.*|react-navigation|@react-navigation/.*|@unimodules/.*|unimodules|sentry-expo|native-base|react-native-svg|@rocket.chat/ui-kit|@rocket.chat/sdk|@rocket.chat/message-parser|tiny-events)' ], preset: './jest.preset.js', cacheDirectory: '/.jest-cache', diff --git a/package.json b/package.json index cb488c56114..73238f637d2 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,7 @@ "@react-navigation/native": "^7.3.3", "@react-navigation/native-stack": "^7.17.5", "@rocket.chat/media-signaling": "1.0.0-rc.1", - "@rocket.chat/message-parser": "0.31.31", + "@rocket.chat/message-parser": "0.31.36", "@rocket.chat/mobile-crypto": "RocketChat/rocket.chat-mobile-crypto#main", "@rocket.chat/sdk": "RocketChat/Rocket.Chat.js.SDK#mobile", "@rocket.chat/ui-kit": "^0.39.0", diff --git a/patches/@rocket.chat+message-parser+0.31.31.patch b/patches/@rocket.chat+message-parser+0.31.31.patch deleted file mode 100644 index d255d0edc49..00000000000 --- a/patches/@rocket.chat+message-parser+0.31.31.patch +++ /dev/null @@ -1,11 +0,0 @@ -diff --git a/node_modules/@rocket.chat/message-parser/messageParser.js b/node_modules/@rocket.chat/message-parser/messageParser.js -index c1dc1bd..d25c5ed 100644 ---- a/node_modules/@rocket.chat/message-parser/messageParser.js -+++ b/node_modules/@rocket.chat/message-parser/messageParser.js -@@ -3,5 +3,5 @@ - if (process.env.NODE_ENV === 'production') { - module.exports = require('./dist/messageParser.production.js'); - } else { -- module.exports = require('./dist/messageParser.development.js'); -+ module.exports = require('./dist/messageParser.production.js'); - } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index eafb0f810ca..4b93a331e95 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -85,8 +85,8 @@ importers: specifier: 1.0.0-rc.1 version: 1.0.0-rc.1 '@rocket.chat/message-parser': - specifier: 0.31.31 - version: 0.31.31 + specifier: 0.31.36 + version: 0.31.36 '@rocket.chat/mobile-crypto': specifier: RocketChat/rocket.chat-mobile-crypto#main version: https://codeload.github.com/RocketChat/rocket.chat-mobile-crypto/tar.gz/69a0a250dd7c6ff0808eb659d7202be1cae7fa1c(react-native@0.81.5(@babel/core@7.25.9)(@react-native-community/cli@20.0.0(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.25.9))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0) @@ -2444,11 +2444,12 @@ packages: '@rocket.chat/media-signaling@1.0.0-rc.1': resolution: {integrity: sha512-yUMFOyhJfN1XH4IssQF17zAeaamNiSw3riaeuc+pby4XYDd405aN8jh//Lz2nn9c8DeGCCzUbRStlMlmPsbr6g==} - '@rocket.chat/message-parser@0.31.31': - resolution: {integrity: sha512-YWHdin2ejndwgQJXlHIzAmQB+xvZLeEOqOkPq8RxdyTjAaGo1DbBCrc0aU7u0LOUnGN+jm3H4grnYdI9SPwitA==} + '@rocket.chat/message-parser@0.31.36': + resolution: {integrity: sha512-Z8kmWHKswEYH9dnr6iU61DJG2BAmCTkvhXhZ4dtFHe8/UThgr8cJcFSpSJi/y8Fh7LakzQIsgq+xMZ1OcwZU+g==} + engines: {node: 22.16.0} '@rocket.chat/mobile-crypto@https://codeload.github.com/RocketChat/rocket.chat-mobile-crypto/tar.gz/69a0a250dd7c6ff0808eb659d7202be1cae7fa1c': - resolution: {gitHosted: true, integrity: sha512-v3uaVCYlj9gGZkAZe3JWQkhlGaRyahmnagbMSKtSnl+6WuLNxaPOf0GjJKVuxBdqkXPPhr23JIihVlch3FVeCQ==, tarball: https://codeload.github.com/RocketChat/rocket.chat-mobile-crypto/tar.gz/69a0a250dd7c6ff0808eb659d7202be1cae7fa1c} + resolution: {gitHosted: true, tarball: https://codeload.github.com/RocketChat/rocket.chat-mobile-crypto/tar.gz/69a0a250dd7c6ff0808eb659d7202be1cae7fa1c} version: 0.4.0 peerDependencies: react: '*' @@ -7277,11 +7278,11 @@ packages: resolution: {integrity: sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q==} engines: {node: '>=14.0.0'} - tldts-core@5.7.112: - resolution: {integrity: sha512-mutrEUgG2sp0e/MIAnv9TbSLR0IPbvmAImpzqul5O/HJ2XM1/I1sajchQ/fbj0fPdA31IiuWde8EUhfwyldY1Q==} + tldts-core@6.1.86: + resolution: {integrity: sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==} - tldts@5.7.112: - resolution: {integrity: sha512-6VSJ/C0uBtc2PQlLsp4IT8MIk2UUh6qVeXB1HZtK+0HiXlAPzNcfF3p2WM9RqCO/2X1PIa4danlBLPoC2/Tc7A==} + tldts@6.1.86: + resolution: {integrity: sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==} hasBin: true tmp@0.2.5: @@ -10457,9 +10458,9 @@ snapshots: '@rocket.chat/emitter': 0.32.0 ajv: 8.18.0 - '@rocket.chat/message-parser@0.31.31': + '@rocket.chat/message-parser@0.31.36': dependencies: - tldts: 5.7.112 + tldts: 6.1.86 '@rocket.chat/mobile-crypto@https://codeload.github.com/RocketChat/rocket.chat-mobile-crypto/tar.gz/69a0a250dd7c6ff0808eb659d7202be1cae7fa1c(react-native@0.81.5(@babel/core@7.25.9)(@react-native-community/cli@20.0.0(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.25.9))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)': dependencies: @@ -16076,11 +16077,11 @@ snapshots: tinyspy@4.0.4: {} - tldts-core@5.7.112: {} + tldts-core@6.1.86: {} - tldts@5.7.112: + tldts@6.1.86: dependencies: - tldts-core: 5.7.112 + tldts-core: 6.1.86 tmp@0.2.5: {}