stream-chat-react-native-core 5.20.0 → 5.20.1-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/lib/commonjs/components/Message/MessageSimple/utils/generateMarkdownText.js +32 -0
  2. package/lib/commonjs/components/Message/MessageSimple/utils/generateMarkdownText.js.map +1 -0
  3. package/lib/commonjs/components/Message/MessageSimple/utils/parseLinks.js +3 -3
  4. package/lib/commonjs/components/Message/MessageSimple/utils/parseLinks.js.map +1 -1
  5. package/lib/commonjs/components/Message/MessageSimple/utils/renderText.js +24 -41
  6. package/lib/commonjs/components/Message/MessageSimple/utils/renderText.js.map +1 -1
  7. package/lib/commonjs/components/Reply/Reply.js +4 -4
  8. package/lib/commonjs/components/Reply/Reply.js.map +1 -1
  9. package/lib/commonjs/i18n/en.json +1 -1
  10. package/lib/commonjs/i18n/fr.json +60 -60
  11. package/lib/commonjs/i18n/hi.json +60 -60
  12. package/lib/commonjs/i18n/it.json +60 -60
  13. package/lib/commonjs/i18n/nl.json +60 -60
  14. package/lib/commonjs/i18n/ru.json +60 -60
  15. package/lib/commonjs/i18n/tr.json +60 -60
  16. package/lib/commonjs/utils/utils.js +2 -1
  17. package/lib/commonjs/utils/utils.js.map +1 -1
  18. package/lib/commonjs/version.json +1 -1
  19. package/lib/module/components/Message/MessageSimple/utils/generateMarkdownText.js +32 -0
  20. package/lib/module/components/Message/MessageSimple/utils/generateMarkdownText.js.map +1 -0
  21. package/lib/module/components/Message/MessageSimple/utils/parseLinks.js +3 -3
  22. package/lib/module/components/Message/MessageSimple/utils/parseLinks.js.map +1 -1
  23. package/lib/module/components/Message/MessageSimple/utils/renderText.js +24 -41
  24. package/lib/module/components/Message/MessageSimple/utils/renderText.js.map +1 -1
  25. package/lib/module/components/Reply/Reply.js +4 -4
  26. package/lib/module/components/Reply/Reply.js.map +1 -1
  27. package/lib/module/i18n/en.json +1 -1
  28. package/lib/module/i18n/fr.json +60 -60
  29. package/lib/module/i18n/hi.json +60 -60
  30. package/lib/module/i18n/it.json +60 -60
  31. package/lib/module/i18n/nl.json +60 -60
  32. package/lib/module/i18n/ru.json +60 -60
  33. package/lib/module/i18n/tr.json +60 -60
  34. package/lib/module/utils/utils.js +2 -1
  35. package/lib/module/utils/utils.js.map +1 -1
  36. package/lib/module/version.json +1 -1
  37. package/lib/typescript/components/Message/MessageSimple/utils/generateMarkdownText.d.ts +3 -0
  38. package/lib/typescript/components/Message/MessageSimple/utils/renderText.d.ts +1 -1
  39. package/lib/typescript/i18n/en.json +1 -1
  40. package/lib/typescript/i18n/fr.json +60 -60
  41. package/lib/typescript/i18n/hi.json +60 -60
  42. package/lib/typescript/i18n/it.json +60 -60
  43. package/lib/typescript/i18n/nl.json +60 -60
  44. package/lib/typescript/i18n/ru.json +60 -60
  45. package/lib/typescript/i18n/tr.json +60 -60
  46. package/lib/typescript/utils/Streami18n.d.ts +4 -0
  47. package/package.json +1 -1
  48. package/src/components/Message/MessageSimple/utils/generateMarkdownText.ts +43 -0
  49. package/src/components/Message/MessageSimple/utils/parseLinks.ts +5 -5
  50. package/src/components/Message/MessageSimple/utils/renderText.tsx +10 -26
  51. package/src/components/Reply/Reply.tsx +16 -14
  52. package/src/i18n/en.json +1 -1
  53. package/src/i18n/fr.json +60 -60
  54. package/src/i18n/hi.json +60 -60
  55. package/src/i18n/it.json +60 -60
  56. package/src/i18n/nl.json +60 -60
  57. package/src/i18n/ru.json +60 -60
  58. package/src/i18n/tr.json +60 -60
  59. package/src/utils/utils.ts +2 -1
  60. package/src/version.json +1 -1
@@ -1,69 +1,69 @@
1
1
  {
2
- "1 Reply": "1 Ответ",
3
- "1 Thread Reply": "1 тема Ответить",
4
- "Allow access to your Gallery": "Разрешить доступ к вашей галерее",
5
- "Also send to channel": "Также отправить на канал",
6
- "Are you sure you want to permanently delete this message?": "Вы действительно хотите удалить это сообщение без возможности восстановления?",
7
- "Block User": "Заблокировать пользователя",
8
- "Cancel": "Отмена",
9
- "Cannot Flag Message": "Невозможно пожаловаться на сообщение",
10
- "Copy Message": "Копировать сообщение",
11
- "Delete": "удалять",
12
- "Delete Message": "Удалить сообщение",
13
- "Do you want to send a copy of this message to a moderator for further investigation?": "Вы хотите отправить копию этого сообщения модератору для дальнейшего изучения?",
14
- "Edit Message": "Редактировать сообщение",
15
- "Editing Message": "Редактирование сообщения",
2
+ "1 Reply": "",
3
+ "1 Thread Reply": "",
4
+ "Allow access to your Gallery": "",
5
+ "Also send to channel": "",
6
+ "Are you sure you want to permanently delete this message?": "",
7
+ "Block User": "",
8
+ "Cancel": "",
9
+ "Cannot Flag Message": "",
10
+ "Copy Message": "",
11
+ "Delete": "",
12
+ "Delete Message": "",
13
+ "Do you want to send a copy of this message to a moderator for further investigation?": "",
14
+ "Edit Message": "",
15
+ "Editing Message": "",
16
16
  "Emoji matching": "Соответствие эмодзи",
17
- "Empty message...": "Пустое сообщение...",
17
+ "Empty message...": "",
18
18
  "Error loading": "Ошибка при загрузке",
19
- "Error loading channel list...": "Ошибка загрузки списка каналов...",
20
- "Error loading messages for this channel...": "Ошибка загрузки сообщений для этого канала...",
21
- "Error while loading, please reload/refresh": "Ошибка загрузки, пожалуйста перезагрузите или обновите",
22
- "File type not supported": "Тип файла не поддерживается",
23
- "Flag": "Пометить",
24
- "Flag Message": "Пометить сообщение",
25
- "Flag action failed either due to a network issue or the message is already flagged": "Не удалось отправить жалобу. Возможные причины: проблема с подключением к интернету или ваша жалоба уже была принята.",
19
+ "Error loading channel list...": "",
20
+ "Error loading messages for this channel...": "",
21
+ "Error while loading, please reload/refresh": "",
22
+ "File type not supported": "",
23
+ "Flag": "",
24
+ "Flag Message": "",
25
+ "Flag action failed either due to a network issue or the message is already flagged": "",
26
26
  "Instant Commands": "Мгновенные Команды",
27
- "Links are disabled": "Ссылки отключены",
28
- "Loading channels...": "Загружаю каналы...",
29
- "Loading messages...": "Загружаю сообщения...",
30
- "Loading...": "Загружаю...",
27
+ "Links are disabled": "",
28
+ "Loading channels...": "",
29
+ "Loading messages...": "",
30
+ "Loading...": "",
31
31
  "Message Reactions": "Сообщения Реакции",
32
32
  "Message deleted": "Сообщение удалено",
33
- "Message flagged": "Сообщение отмечено",
34
- "Mute User": "Отключить пользователя",
33
+ "Message flagged": "",
34
+ "Mute User": "",
35
35
  "Not supported": "не поддерживается",
36
- "Nothing yet...": "Пока ничего нет...",
37
- "Ok": "",
38
- "Only visible to you": "Видно только вам",
39
- "Photo": "Фото",
40
- "Photos and Videos": "Фото и видео",
41
- "Pin to Conversation": "Закрепить к беседе",
42
- "Pinned by": "Закреплено пользователем",
43
- "Please enable access to your photos and videos so you can share them.": "Разрешите доступ к своим фотографиям и видео, чтобы вы могли ими поделиться.",
44
- "Please select a channel first": "Пожалуйста, сначала выберите канал",
45
- "Reconnecting...": "Переподключение...",
46
- "Reply": "Ответить",
47
- "Reply to Message": "Ответить на сообщение",
48
- "Resend": "Отправить",
49
- "Search GIFs": "Поиск GIF",
50
- "Send a message": "Отправить сообщение",
51
- "Sending links is not allowed in this conversation": "Отправка ссылок недоступна в этом чате",
52
- "Slow mode ON": "Медленный режим включен",
53
- "The message has been reported to a moderator.": "Сообщение отправлено модератору.",
54
- "Thread Reply": "Тема Ответить",
55
- "Unblock User": "Разблокировать пользователя",
56
- "Unknown User": "Неизвестный пользователь",
57
- "Unmute User": "Включить микрофон",
58
- "Unpin from Conversation": "Открепить от беседы",
59
- "Unread Messages": "Непрочитанные Сообщения",
60
- "Video": "видео",
61
- "You": "Вы",
36
+ "Nothing yet...": "",
37
+ "Ok": "",
38
+ "Only visible to you": "",
39
+ "Photo": "",
40
+ "Photos and Videos": "",
41
+ "Pin to Conversation": "",
42
+ "Pinned by": "",
43
+ "Please enable access to your photos and videos so you can share them.": "",
44
+ "Please select a channel first": "",
45
+ "Reconnecting...": "",
46
+ "Reply": "",
47
+ "Reply to Message": "",
48
+ "Resend": "",
49
+ "Search GIFs": "",
50
+ "Send a message": "",
51
+ "Sending links is not allowed in this conversation": "",
52
+ "Slow mode ON": "",
53
+ "The message has been reported to a moderator.": "",
54
+ "Thread Reply": "",
55
+ "Unblock User": "",
56
+ "Unknown User": "",
57
+ "Unmute User": "",
58
+ "Unpin from Conversation": "",
59
+ "Unread Messages": "",
60
+ "Video": "",
61
+ "You": "",
62
62
  "You can't send messages in this channel": "Вы не можете отправлять сообщения в этот канал",
63
- "{{ firstUser }} and {{ nonSelfUserLength }} more are typing": "{{ firstUser }} и еще {{ nonSelfUserLength }} пишут",
64
- "{{ index }} of {{ photoLength }}": "{{ index }} из {{ photoLength }}",
65
- "{{ replyCount }} Replies": "{{ replyCount }} Ответов",
66
- "{{ replyCount }} Thread Replies": "{{replyCount}} Ответы в темах",
67
- "{{ user }} is typing": "{{ user }} пишет",
68
- "🏙 Attachment...": "🏙 Вложение..."
63
+ "{{ firstUser }} and {{ nonSelfUserLength }} more are typing": "",
64
+ "{{ index }} of {{ photoLength }}": "",
65
+ "{{ replyCount }} Replies": "",
66
+ "{{ replyCount }} Thread Replies": "",
67
+ "{{ user }} is typing": "",
68
+ "🏙 Attachment...": ""
69
69
  }
@@ -1,69 +1,69 @@
1
1
  {
2
- "1 Reply": "1 Cevap",
3
- "1 Thread Reply": "1 Konu Yanıtı",
4
- "Allow access to your Gallery": "Galerinize erişime izin verin",
5
- "Also send to channel": "Kanala da gönder",
6
- "Are you sure you want to permanently delete this message?": "Bu mesajı kalıcı olarak silmek istediğinizden emin misiniz?",
7
- "Block User": "Kullanıcıyı engelle",
8
- "Cancel": "İptal",
9
- "Cannot Flag Message": "Raporlama Başarısız",
10
- "Copy Message": "Mesajı Kopyala",
11
- "Delete": "Sil",
12
- "Delete Message": "Mesajı Sil",
13
- "Do you want to send a copy of this message to a moderator for further investigation?": "Detaylı inceleme için bu mesajın kopyasını moderatöre göndermek istiyor musunuz?",
14
- "Edit Message": "Mesajı Düzenle",
15
- "Editing Message": "Mesaj Düzenleniyor",
2
+ "1 Reply": "",
3
+ "1 Thread Reply": "",
4
+ "Allow access to your Gallery": "",
5
+ "Also send to channel": "",
6
+ "Are you sure you want to permanently delete this message?": "",
7
+ "Block User": "",
8
+ "Cancel": "",
9
+ "Cannot Flag Message": "",
10
+ "Copy Message": "",
11
+ "Delete": "",
12
+ "Delete Message": "",
13
+ "Do you want to send a copy of this message to a moderator for further investigation?": "",
14
+ "Edit Message": "",
15
+ "Editing Message": "",
16
16
  "Emoji matching": "Emoji eşleştirme",
17
- "Empty message...": "Boş mesaj...",
17
+ "Empty message...": "",
18
18
  "Error loading": "Yükleme hatası",
19
- "Error loading channel list...": "Kanal listesi yüklenirken hata oluştu...",
20
- "Error loading messages for this channel...": "Bu kanal için mesajlar yüklenirken hata oluştu...",
21
- "Error while loading, please reload/refresh": "Yüklenirken hata oluştu, lütfen tekrar deneyiniz",
22
- "File type not supported": "Dosya türü desteklenmiyor",
23
- "Flag": "Raporla",
24
- "Flag Message": "Mesajı Raporla",
25
- "Flag action failed either due to a network issue or the message is already flagged": "Mesajın daha önce raporlanmış olması veya bir ağ bağlantısı sorunu nedeniyle raporlama işlemi başarısız oldu.",
19
+ "Error loading channel list...": "",
20
+ "Error loading messages for this channel...": "",
21
+ "Error while loading, please reload/refresh": "",
22
+ "File type not supported": "",
23
+ "Flag": "",
24
+ "Flag Message": "",
25
+ "Flag action failed either due to a network issue or the message is already flagged": "",
26
26
  "Instant Commands": "Anlık Komutlar",
27
- "Links are disabled": "Bağlantılar devre dışı",
28
- "Loading channels...": "Kanallar yükleniyor...",
29
- "Loading messages...": "Mesajlar yükleniyor...",
30
- "Loading...": "Yükleniyor...",
27
+ "Links are disabled": "",
28
+ "Loading channels...": "",
29
+ "Loading messages...": "",
30
+ "Loading...": "",
31
31
  "Message Reactions": "Mesaj Tepkileri",
32
32
  "Message deleted": "Mesaj silindi",
33
- "Message flagged": "Mesaj işaretlendi",
34
- "Mute User": "Kullanıcıyı sessize al",
33
+ "Message flagged": "",
34
+ "Mute User": "",
35
35
  "Not supported": "Desteklenmiyor",
36
- "Nothing yet...": "Henüz değil...",
37
- "Ok": "Tamam",
38
- "Only visible to you": "Sadece siz görebilirsiniz",
39
- "Photo": "Fotoğraf",
40
- "Photos and Videos": "Fotoğraflar ve Videolar",
41
- "Pin to Conversation": "Konuşmaya sabitle",
42
- "Pinned by": "Tarafından sabitlendi",
43
- "Please enable access to your photos and videos so you can share them.": "Paylaşım yapabilmek için lutfen fotoğraflarınıza ve videolarınıza erişimi etkinleştirin.",
44
- "Please select a channel first": "Lütfen önce bir kanal seçiniz",
45
- "Reconnecting...": "Yeniden Bağlanılıyor...",
46
- "Reply": "Yanıtla",
47
- "Reply to Message": "Mesajı Yanıtla",
48
- "Resend": "Yeniden gönder",
49
- "Search GIFs": "GIF Ara",
50
- "Send a message": "Mesaj gönder",
51
- "Sending links is not allowed in this conversation": "Bu konuşmada bağlantı göndermek desteklenmiyor",
52
- "Slow mode ON": "Yavaş Mod Açık",
53
- "The message has been reported to a moderator.": "Mesaj moderatöre bildirildi.",
54
- "Thread Reply": "Konu Yanıtı",
55
- "Unblock User": "Kullanıcının engelini kaldır",
56
- "Unknown User": "Bilinmeyen kullanıcı",
57
- "Unmute User": "Kullanıcının sesini aç",
58
- "Unpin from Conversation": "Sabitlemeyi kaldır",
59
- "Unread Messages": "Okunmamış Mesajlar",
60
- "Video": "Video",
61
- "You": "Sen",
36
+ "Nothing yet...": "",
37
+ "Ok": "",
38
+ "Only visible to you": "",
39
+ "Photo": "",
40
+ "Photos and Videos": "",
41
+ "Pin to Conversation": "",
42
+ "Pinned by": "",
43
+ "Please enable access to your photos and videos so you can share them.": "",
44
+ "Please select a channel first": "",
45
+ "Reconnecting...": "",
46
+ "Reply": "",
47
+ "Reply to Message": "",
48
+ "Resend": "",
49
+ "Search GIFs": "",
50
+ "Send a message": "",
51
+ "Sending links is not allowed in this conversation": "",
52
+ "Slow mode ON": "",
53
+ "The message has been reported to a moderator.": "",
54
+ "Thread Reply": "",
55
+ "Unblock User": "",
56
+ "Unknown User": "",
57
+ "Unmute User": "",
58
+ "Unpin from Conversation": "",
59
+ "Unread Messages": "",
60
+ "Video": "",
61
+ "You": "",
62
62
  "You can't send messages in this channel": "Bu konuşmaya mesaj gönderemezsiniz",
63
- "{{ firstUser }} and {{ nonSelfUserLength }} more are typing": "{{ firstUser }} ve {{ nonSelfUserLength }} kişi daha yazıyor",
64
- "{{ index }} of {{ photoLength }}": "{{ index }} / {{ photoLength }}",
65
- "{{ replyCount }} Replies": "{{ replyCount }} Cevap",
66
- "{{ replyCount }} Thread Replies": "{{responseCount}} Konu Cevapı",
67
- "{{ user }} is typing": "{{ user }} yazıyor",
68
- "🏙 Attachment...": "🏙 Ek..."
63
+ "{{ firstUser }} and {{ nonSelfUserLength }} more are typing": "",
64
+ "{{ index }} of {{ photoLength }}": "",
65
+ "{{ replyCount }} Replies": "",
66
+ "{{ replyCount }} Thread Replies": "",
67
+ "{{ user }} is typing": "",
68
+ "🏙 Attachment...": ""
69
69
  }
@@ -157,6 +157,10 @@ export declare class Streami18n {
157
157
  "Please select a channel first": string;
158
158
  "Reconnecting...": string;
159
159
  Reply: string;
160
+ /**
161
+ * Hindi notation for meridiems are quite fuzzy in practice. While there exists
162
+ * a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.
163
+ */
160
164
  "Reply to Message": string;
161
165
  Resend: string;
162
166
  "Search GIFs": string;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "stream-chat-react-native-core",
3
3
  "description": "The official React Native and Expo components for Stream Chat, a service for building chat applications",
4
- "version": "5.20.0",
4
+ "version": "5.20.1-beta.1",
5
5
  "author": {
6
6
  "company": "Stream.io Inc",
7
7
  "name": "Stream.io Inc"
@@ -0,0 +1,43 @@
1
+ import truncate from 'lodash/truncate';
2
+
3
+ import { parseLinksFromText } from './parseLinks';
4
+
5
+ import type { DefaultStreamChatGenerics } from '../../../../types/types';
6
+ import type { MessageType } from '../../../MessageList/hooks/useMessageList';
7
+
8
+ export const generateMarkdownText = <
9
+ StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,
10
+ >(
11
+ message: MessageType<StreamChatGenerics>,
12
+ ) => {
13
+ const { text } = message;
14
+
15
+ if (!text) return null;
16
+
17
+ // Trim the extra spaces from the text.
18
+ let resultText = text.trim();
19
+
20
+ // List of all the links present in the text.
21
+ const linkInfos = parseLinksFromText(resultText);
22
+
23
+ for (const linkInfo of linkInfos) {
24
+ const displayLink = truncate(linkInfo.raw, {
25
+ length: 200,
26
+ omission: '...',
27
+ });
28
+ // Convert raw links/emails in the text to respective markdown syntax.
29
+ // Eg: Hi getstream.io -> Hi [getstream.io](getstream.io).
30
+ const normalRegEx = new RegExp(linkInfo.raw, 'g');
31
+ const markdown = `[${displayLink}](${linkInfo.encodedUrl})`;
32
+ resultText = text.replace(normalRegEx, markdown);
33
+
34
+ // After previous step, in some cases, the mentioned user after `@` might have a link/email so we convert it back to normal raw text.
35
+ // Eg: Hi, @[test.user@gmail.com](mailto:test.user@gmail.com) to @test.user@gmail.com.
36
+ const mentionsRegex = new RegExp(`@\\[${displayLink}\\]\\(${linkInfo.encodedUrl}\\)`, 'g');
37
+ resultText = resultText.replace(mentionsRegex, `@${displayLink}`);
38
+ }
39
+
40
+ resultText = resultText.replace(/[<&"'>]/g, '\\$&');
41
+
42
+ return resultText;
43
+ };
@@ -12,13 +12,13 @@ interface LinkInfo {
12
12
  const removeMarkdownLinksFromText = (input: string) => input.replace(/\[[\w\s]+\]\(.*\)/g, '');
13
13
 
14
14
  /**
15
- * Hermes doesn't support lookbehind, so this is done separately to avoid
16
- * parsing user names as links.
17
- * */
18
- const removeUserNamesFromText = (input: string) => input.replace(/^@\w+\.?\w/, '');
15
+ * This is done to avoid parsing usernames with dot as well as an email address in it.
16
+ */
17
+ const removeUserNamesWithEmailFromText = (input: string) =>
18
+ input.replace(/@(\w+(\.\w+)?)(@\w+\.\w+)/g, '');
19
19
 
20
20
  export const parseLinksFromText = (input: string): LinkInfo[] => {
21
- const strippedInput = [removeMarkdownLinksFromText, removeUserNamesFromText].reduce(
21
+ const strippedInput = [removeMarkdownLinksFromText, removeUserNamesWithEmailFromText].reduce(
22
22
  (acc, fn) => fn(acc),
23
23
  input,
24
24
  );
@@ -4,7 +4,6 @@ import { GestureResponderEvent, Linking, Text, TextProps, View, ViewProps } from
4
4
  // @ts-expect-error
5
5
  import Markdown from 'react-native-markdown-package';
6
6
 
7
- import truncate from 'lodash/truncate';
8
7
  import {
9
8
  DefaultRules,
10
9
  defaultRules,
@@ -19,7 +18,7 @@ import {
19
18
 
20
19
  import type { UserResponse } from 'stream-chat';
21
20
 
22
- import { parseLinksFromText } from './parseLinks';
21
+ import { generateMarkdownText } from './generateMarkdownText';
23
22
 
24
23
  import type { MessageContextValue } from '../../../../contexts/messageContext/MessageContext';
25
24
  import type { Colors, MarkdownStyle } from '../../../../contexts/themeContext/utils/theme';
@@ -62,7 +61,7 @@ const defaultMarkdownStyles: MarkdownStyle = {
62
61
  },
63
62
  };
64
63
 
65
- const parse: ParseFunction = (capture, parse, state) => ({
64
+ const mentionsParseFunction: ParseFunction = (capture, parse, state) => ({
66
65
  content: parseInline(parse, capture[0], state),
67
66
  });
68
67
 
@@ -102,25 +101,7 @@ export const renderText = <
102
101
  preventPress,
103
102
  } = params;
104
103
 
105
- // take the @ mentions and turn them into markdown?
106
- // translate links
107
- const { mentioned_users, text } = message;
108
-
109
- if (!text) return null;
110
-
111
- let newText = text.trim();
112
- const linkInfos = parseLinksFromText(newText);
113
-
114
- for (const linkInfo of linkInfos) {
115
- const displayLink = truncate(linkInfo.raw, {
116
- length: 200,
117
- omission: '...',
118
- });
119
- const markdown = `[${displayLink}](${linkInfo.encodedUrl})`;
120
- newText = newText.replace(linkInfo.raw, markdown);
121
- }
122
-
123
- newText = newText.replace(/[<&"'>]/g, '\\$&');
104
+ const markdownText = generateMarkdownText<StreamChatGenerics>(message);
124
105
 
125
106
  const styles: MarkdownStyle = {
126
107
  ...defaultMarkdownStyles,
@@ -220,6 +201,9 @@ export const renderText = <
220
201
  );
221
202
  };
222
203
 
204
+ // take the @ mentions and turn them into markdown?
205
+ // translate links
206
+ const { mentioned_users } = message;
223
207
  const mentionedUsers = Array.isArray(mentioned_users)
224
208
  ? mentioned_users.reduce((acc, cur) => {
225
209
  const userName = cur.name || cur.id || '';
@@ -237,7 +221,7 @@ export const renderText = <
237
221
  : '';
238
222
 
239
223
  const regEx = new RegExp(`^\\B(${mentionedUsers})`, 'g');
240
- const match: MatchFunction = (source) => regEx.exec(source);
224
+ const mentionsMatchFunction: MatchFunction = (source) => regEx.exec(source);
241
225
 
242
226
  const mentionsReact: ReactNodeOutput = (node, output, { ...state }) => {
243
227
  /**removes the @ prefix of username */
@@ -297,9 +281,9 @@ export const renderText = <
297
281
  ...(mentionedUsers
298
282
  ? {
299
283
  mentions: {
300
- match,
284
+ match: mentionsMatchFunction,
301
285
  order: defaultRules.text.order - 0.5,
302
- parse,
286
+ parse: mentionsParseFunction,
303
287
  react: mentionsReact,
304
288
  },
305
289
  }
@@ -318,7 +302,7 @@ export const renderText = <
318
302
  }}
319
303
  styles={styles}
320
304
  >
321
- {newText}
305
+ {markdownText}
322
306
  </Markdown>
323
307
  );
324
308
  };
@@ -223,25 +223,26 @@ const ReplyWithContext = <
223
223
  ) : null}
224
224
  <MessageTextContainer<StreamChatGenerics>
225
225
  markdownStyles={
226
- quotedMessage.deleted_at
226
+ quotedMessage.type === 'deleted'
227
227
  ? merge({ em: { color: grey } }, deletedText)
228
228
  : { text: styles.text, ...markdownStyles }
229
229
  }
230
230
  message={{
231
231
  ...quotedMessage,
232
- text: quotedMessage.deleted_at
233
- ? `_${t('Message deleted')}_`
234
- : quotedMessage.text
235
- ? quotedMessage.text.length > 170
236
- ? `${quotedMessage.text.slice(0, 170)}...`
232
+ text:
233
+ quotedMessage.type === 'deleted'
234
+ ? `_${t('Message deleted')}_`
237
235
  : quotedMessage.text
238
- : messageType === 'image'
239
- ? t('Photo')
240
- : messageType === 'video'
241
- ? t('Video')
242
- : messageType === 'file'
243
- ? lastAttachment?.title || ''
244
- : '',
236
+ ? quotedMessage.text.length > 170
237
+ ? `${quotedMessage.text.slice(0, 170)}...`
238
+ : quotedMessage.text
239
+ : messageType === 'image'
240
+ ? t('Photo')
241
+ : messageType === 'video'
242
+ ? t('Video')
243
+ : messageType === 'file'
244
+ ? lastAttachment?.title || ''
245
+ : '',
245
246
  }}
246
247
  onlyEmojis={onlyEmojis}
247
248
  styles={{
@@ -308,7 +309,8 @@ const areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = Default
308
309
  typeof prevQuotedMessage !== 'boolean' &&
309
310
  typeof nextQuotedMessage !== 'boolean'
310
311
  ? prevQuotedMessage.id === nextQuotedMessage.id &&
311
- prevQuotedMessage.deleted_at === nextQuotedMessage.deleted_at
312
+ prevQuotedMessage.deleted_at === nextQuotedMessage.deleted_at &&
313
+ prevQuotedMessage.type === nextQuotedMessage.type
312
314
  : !!prevQuotedMessage === !!nextQuotedMessage;
313
315
 
314
316
  if (!quotedMessageEqual) return false;
package/src/i18n/en.json CHANGED
@@ -22,7 +22,7 @@
22
22
  "File type not supported": "File type not supported",
23
23
  "Flag": "Flag",
24
24
  "Flag Message": "Flag Message",
25
- "Flag action failed either due to a network issue or the message is already flagged": "Flag action failed either due to a network issue or the message is already flagged.",
25
+ "Flag action failed either due to a network issue or the message is already flagged": "Flag action failed either due to a network issue or the message is already flagged",
26
26
  "Instant Commands": "Instant Commands",
27
27
  "Links are disabled": "Links are disabled",
28
28
  "Loading channels...": "Loading channels...",
package/src/i18n/fr.json CHANGED
@@ -1,69 +1,69 @@
1
1
  {
2
- "1 Reply": "1 Réponse",
3
- "1 Thread Reply": "Réponse à 1 fil",
4
- "Allow access to your Gallery": "Autoriser l'accès à votre galerie",
5
- "Also send to channel": "Envoyer également à la chaîne",
6
- "Are you sure you want to permanently delete this message?": "Êtes-vous sûr de vouloir supprimer définitivement ce message?",
7
- "Block User": "Bloquer un utilisateur",
8
- "Cancel": "Annuler",
9
- "Cannot Flag Message": "Impossible de signaler le message",
10
- "Copy Message": "Copier le message",
11
- "Delete": "Supprimer",
12
- "Delete Message": "Supprimer un message",
13
- "Do you want to send a copy of this message to a moderator for further investigation?": "Voulez-vous envoyer une copie de ce message à un modérateur pour une enquête plus approfondie?",
14
- "Edit Message": "Éditer un message",
15
- "Editing Message": "Édite un message",
2
+ "1 Reply": "",
3
+ "1 Thread Reply": "",
4
+ "Allow access to your Gallery": "",
5
+ "Also send to channel": "",
6
+ "Are you sure you want to permanently delete this message?": "",
7
+ "Block User": "",
8
+ "Cancel": "",
9
+ "Cannot Flag Message": "",
10
+ "Copy Message": "",
11
+ "Delete": "",
12
+ "Delete Message": "",
13
+ "Do you want to send a copy of this message to a moderator for further investigation?": "",
14
+ "Edit Message": "",
15
+ "Editing Message": "",
16
16
  "Emoji matching": "Correspondance Emoji",
17
- "Empty message...": "Message vide...",
17
+ "Empty message...": "",
18
18
  "Error loading": "Erreur lors du chargement",
19
- "Error loading channel list...": "Erreur lors du chargement de la liste de canaux...",
20
- "Error loading messages for this channel...": "Erreur lors du chargement des messages de ce canal...",
21
- "Error while loading, please reload/refresh": "Erreur lors du chargement, veuillez recharger/rafraîchir",
22
- "File type not supported": "Le type de fichier n'est pas pris en charge",
23
- "Flag": "Signaler",
24
- "Flag Message": "Signaler le message",
25
- "Flag action failed either due to a network issue or the message is already flagged": "L'action de signalisation a échoué en raison d'un problème de réseau ou le message est déjà signalé.",
19
+ "Error loading channel list...": "",
20
+ "Error loading messages for this channel...": "",
21
+ "Error while loading, please reload/refresh": "",
22
+ "File type not supported": "",
23
+ "Flag": "",
24
+ "Flag Message": "",
25
+ "Flag action failed either due to a network issue or the message is already flagged": "",
26
26
  "Instant Commands": "Commandes Instantanées",
27
- "Links are disabled": "Links are disabled",
28
- "Loading channels...": "Chargement des canaux...",
29
- "Loading messages...": "Chargement des messages...",
30
- "Loading...": "Chargement...",
27
+ "Links are disabled": "",
28
+ "Loading channels...": "",
29
+ "Loading messages...": "",
30
+ "Loading...": "",
31
31
  "Message Reactions": "Réactions aux messages",
32
32
  "Message deleted": "Message supprimé",
33
- "Message flagged": "Message signalé",
34
- "Mute User": "Utilisateur muet",
33
+ "Message flagged": "",
34
+ "Mute User": "",
35
35
  "Not supported": "Non pris en charge",
36
- "Nothing yet...": "Aucun message...",
37
- "Ok": "Ok",
38
- "Only visible to you": "Seulement visible par vous",
39
- "Photo": "Photo",
40
- "Photos and Videos": "Photos et vidéos",
41
- "Pin to Conversation": "Épingler à la conversation",
42
- "Pinned by": "Épinglé par",
43
- "Please enable access to your photos and videos so you can share them.": "Veuillez autoriser l'accès à vos photos et vidéos afin de pouvoir les partager.",
44
- "Please select a channel first": "Veuillez d'abord selectionnez un canal",
45
- "Reconnecting...": "Se Reconnecter...",
46
- "Reply": "Répondre",
47
- "Reply to Message": "Répondre au message",
48
- "Resend": "Renvoyer",
49
- "Search GIFs": "Rechercher des GIF",
50
- "Send a message": "Envoyer un message",
51
- "Sending links is not allowed in this conversation": "Sending links is not allowed in this conversation",
52
- "Slow mode ON": "Mode lent activé",
53
- "The message has been reported to a moderator.": "Le message a été signalé à un modérateur.",
54
- "Thread Reply": "Réponse à la discussion",
55
- "Unblock User": "Débloquer Utilisateur",
56
- "Unknown User": "Utilisateur inconnu",
57
- "Unmute User": "Activer le son de Utilisateur",
58
- "Unpin from Conversation": "Décrocher de la conversation",
59
- "Unread Messages": "Messages non lus",
60
- "Video": "Vidéo",
61
- "You": "Toi",
36
+ "Nothing yet...": "",
37
+ "Ok": "",
38
+ "Only visible to you": "",
39
+ "Photo": "",
40
+ "Photos and Videos": "",
41
+ "Pin to Conversation": "",
42
+ "Pinned by": "",
43
+ "Please enable access to your photos and videos so you can share them.": "",
44
+ "Please select a channel first": "",
45
+ "Reconnecting...": "",
46
+ "Reply": "",
47
+ "Reply to Message": "",
48
+ "Resend": "",
49
+ "Search GIFs": "",
50
+ "Send a message": "",
51
+ "Sending links is not allowed in this conversation": "",
52
+ "Slow mode ON": "",
53
+ "The message has been reported to a moderator.": "",
54
+ "Thread Reply": "",
55
+ "Unblock User": "",
56
+ "Unknown User": "",
57
+ "Unmute User": "",
58
+ "Unpin from Conversation": "",
59
+ "Unread Messages": "",
60
+ "Video": "",
61
+ "You": "",
62
62
  "You can't send messages in this channel": "You can't send messages in this channel",
63
- "{{ firstUser }} and {{ nonSelfUserLength }} more are typing": "{{ firstUser }} et {{ nonSelfUserLength }} autres sont en train d'écrire",
64
- "{{ index }} of {{ photoLength }}": "{{ index }} sur {{ photoLength }}",
65
- "{{ replyCount }} Replies": "{{ replyCount }} Réponses",
66
- "{{ replyCount }} Thread Replies": "{{replyCount}} Réponses à la discussion",
67
- "{{ user }} is typing": "{{ user }} est en train d'écrire",
68
- "🏙 Attachment...": "🏙 Pièce jointe..."
63
+ "{{ firstUser }} and {{ nonSelfUserLength }} more are typing": "",
64
+ "{{ index }} of {{ photoLength }}": "",
65
+ "{{ replyCount }} Replies": "",
66
+ "{{ replyCount }} Thread Replies": "",
67
+ "{{ user }} is typing": "",
68
+ "🏙 Attachment...": ""
69
69
  }