stream-chat-react-native-core 5.24.0-beta.4 → 5.24.0-beta.6

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 (95) hide show
  1. package/lib/commonjs/components/Attachment/Attachment.js +22 -14
  2. package/lib/commonjs/components/Attachment/Attachment.js.map +1 -1
  3. package/lib/commonjs/components/Attachment/Card.js +11 -4
  4. package/lib/commonjs/components/Attachment/Card.js.map +1 -1
  5. package/lib/commonjs/components/Attachment/Gallery.js +24 -16
  6. package/lib/commonjs/components/Attachment/Gallery.js.map +1 -1
  7. package/lib/commonjs/components/Message/Message.js +14 -7
  8. package/lib/commonjs/components/Message/Message.js.map +1 -1
  9. package/lib/commonjs/components/Message/MessageSimple/MessageContent.js +22 -16
  10. package/lib/commonjs/components/Message/MessageSimple/MessageContent.js.map +1 -1
  11. package/lib/commonjs/components/Message/MessageSimple/MessageSimple.js +14 -8
  12. package/lib/commonjs/components/Message/MessageSimple/MessageSimple.js.map +1 -1
  13. package/lib/commonjs/components/Message/MessageSimple/MessageTextContainer.js +10 -4
  14. package/lib/commonjs/components/Message/MessageSimple/MessageTextContainer.js.map +1 -1
  15. package/lib/commonjs/components/Message/hooks/useCreateMessageContext.js +6 -1
  16. package/lib/commonjs/components/Message/hooks/useCreateMessageContext.js.map +1 -1
  17. package/lib/commonjs/components/MessageInput/SendButton.js +2 -2
  18. package/lib/commonjs/components/MessageInput/SendButton.js.map +1 -1
  19. package/lib/commonjs/components/MessageOverlay/MessageOverlay.js +9 -3
  20. package/lib/commonjs/components/MessageOverlay/MessageOverlay.js.map +1 -1
  21. package/lib/commonjs/contexts/messageContext/MessageContext.js +2 -2
  22. package/lib/commonjs/contexts/messageContext/MessageContext.js.map +1 -1
  23. package/lib/commonjs/i18n/en.json +1 -1
  24. package/lib/commonjs/i18n/fr.json +36 -36
  25. package/lib/commonjs/i18n/hi.json +36 -36
  26. package/lib/commonjs/i18n/it.json +36 -36
  27. package/lib/commonjs/i18n/nl.json +36 -36
  28. package/lib/commonjs/i18n/ru.json +36 -36
  29. package/lib/commonjs/i18n/tr.json +36 -36
  30. package/lib/commonjs/version.json +1 -1
  31. package/lib/module/components/Attachment/Attachment.js +22 -14
  32. package/lib/module/components/Attachment/Attachment.js.map +1 -1
  33. package/lib/module/components/Attachment/Card.js +11 -4
  34. package/lib/module/components/Attachment/Card.js.map +1 -1
  35. package/lib/module/components/Attachment/Gallery.js +24 -16
  36. package/lib/module/components/Attachment/Gallery.js.map +1 -1
  37. package/lib/module/components/Message/Message.js +14 -7
  38. package/lib/module/components/Message/Message.js.map +1 -1
  39. package/lib/module/components/Message/MessageSimple/MessageContent.js +22 -16
  40. package/lib/module/components/Message/MessageSimple/MessageContent.js.map +1 -1
  41. package/lib/module/components/Message/MessageSimple/MessageSimple.js +14 -8
  42. package/lib/module/components/Message/MessageSimple/MessageSimple.js.map +1 -1
  43. package/lib/module/components/Message/MessageSimple/MessageTextContainer.js +10 -4
  44. package/lib/module/components/Message/MessageSimple/MessageTextContainer.js.map +1 -1
  45. package/lib/module/components/Message/hooks/useCreateMessageContext.js +6 -1
  46. package/lib/module/components/Message/hooks/useCreateMessageContext.js.map +1 -1
  47. package/lib/module/components/MessageInput/SendButton.js +2 -2
  48. package/lib/module/components/MessageInput/SendButton.js.map +1 -1
  49. package/lib/module/components/MessageOverlay/MessageOverlay.js +9 -3
  50. package/lib/module/components/MessageOverlay/MessageOverlay.js.map +1 -1
  51. package/lib/module/contexts/messageContext/MessageContext.js +2 -2
  52. package/lib/module/contexts/messageContext/MessageContext.js.map +1 -1
  53. package/lib/module/i18n/en.json +1 -1
  54. package/lib/module/i18n/fr.json +36 -36
  55. package/lib/module/i18n/hi.json +36 -36
  56. package/lib/module/i18n/it.json +36 -36
  57. package/lib/module/i18n/nl.json +36 -36
  58. package/lib/module/i18n/ru.json +36 -36
  59. package/lib/module/i18n/tr.json +36 -36
  60. package/lib/module/version.json +1 -1
  61. package/lib/typescript/components/Attachment/Attachment.d.ts +2 -2
  62. package/lib/typescript/components/Attachment/Card.d.ts +2 -2
  63. package/lib/typescript/components/Attachment/Gallery.d.ts +1 -1
  64. package/lib/typescript/components/Message/MessageSimple/MessageContent.d.ts +1 -1
  65. package/lib/typescript/components/Message/MessageSimple/MessageSimple.d.ts +1 -1
  66. package/lib/typescript/components/Message/MessageSimple/MessageTextContainer.d.ts +1 -1
  67. package/lib/typescript/components/Message/hooks/useCreateMessageContext.d.ts +1 -1
  68. package/lib/typescript/contexts/messageContext/MessageContext.d.ts +8 -2
  69. package/lib/typescript/i18n/en.json +1 -1
  70. package/lib/typescript/i18n/fr.json +36 -36
  71. package/lib/typescript/i18n/hi.json +36 -36
  72. package/lib/typescript/i18n/it.json +36 -36
  73. package/lib/typescript/i18n/nl.json +36 -36
  74. package/lib/typescript/i18n/ru.json +36 -36
  75. package/lib/typescript/i18n/tr.json +36 -36
  76. package/package.json +1 -1
  77. package/src/components/Attachment/Attachment.tsx +16 -2
  78. package/src/components/Attachment/Card.tsx +22 -4
  79. package/src/components/Attachment/Gallery.tsx +11 -0
  80. package/src/components/Message/Message.tsx +9 -0
  81. package/src/components/Message/MessageSimple/MessageContent.tsx +9 -0
  82. package/src/components/Message/MessageSimple/MessageSimple.tsx +9 -0
  83. package/src/components/Message/MessageSimple/MessageTextContainer.tsx +12 -2
  84. package/src/components/Message/hooks/useCreateMessageContext.ts +4 -0
  85. package/src/components/MessageInput/SendButton.tsx +2 -2
  86. package/src/components/MessageOverlay/MessageOverlay.tsx +8 -0
  87. package/src/contexts/messageContext/MessageContext.tsx +7 -1
  88. package/src/i18n/en.json +1 -1
  89. package/src/i18n/fr.json +36 -36
  90. package/src/i18n/hi.json +36 -36
  91. package/src/i18n/it.json +36 -36
  92. package/src/i18n/nl.json +36 -36
  93. package/src/i18n/ru.json +36 -36
  94. package/src/i18n/tr.json +36 -36
  95. package/src/version.json +1 -1
@@ -4,19 +4,19 @@
4
4
  "Allow access to your Gallery": "",
5
5
  "Allow camera access in device settings": "",
6
6
  "Also send to channel": "Также отправить на канал",
7
- "Are you sure you want to permanently delete this message?": "Вы действительно хотите удалить это сообщение без возможности восстановления?",
8
- "Are you sure?": "Вы уверены?",
9
- "Block User": "Заблокировать пользователя",
10
- "Cancel": "Отмена",
11
- "Cannot Flag Message": "Невозможно пожаловаться на сообщение",
12
- "Consider how your comment might make others feel and be sure to follow our Community Guidelines": "Обдумайте, как ваш комментарий может повлиять на других, и убедитесь, что вы следуете нашим правилам сообщества",
13
- "Copy Message": "Копировать сообщение",
14
- "Delete": "удалять",
15
- "Delete Message": "Удалить сообщение",
7
+ "Are you sure you want to permanently delete this message?": "",
8
+ "Are you sure?": "",
9
+ "Block User": "",
10
+ "Cancel": "",
11
+ "Cannot Flag Message": "",
12
+ "Consider how your comment might make others feel and be sure to follow our Community Guidelines": "",
13
+ "Copy Message": "",
14
+ "Delete": "",
15
+ "Delete Message": "",
16
16
  "Device camera is used to take photos or videos.": "",
17
- "Do you want to send a copy of this message to a moderator for further investigation?": "Вы хотите отправить копию этого сообщения модератору для дальнейшего изучения?",
18
- "Edit Message": "Редактировать сообщение",
19
- "Editing Message": "",
17
+ "Do you want to send a copy of this message to a moderator for further investigation?": "",
18
+ "Edit Message": "",
19
+ "Editing Message": "Редактирование сообщения",
20
20
  "Emoji matching": "",
21
21
  "Empty message...": "",
22
22
  "Error loading": "",
@@ -24,9 +24,9 @@
24
24
  "Error loading messages for this channel...": "",
25
25
  "Error while loading, please reload/refresh": "",
26
26
  "File type not supported": "",
27
- "Flag": "Пометить",
28
- "Flag Message": "Пометить сообщение",
29
- "Flag action failed either due to a network issue or the message is already flagged": "Не удалось отправить жалобу. Возможные причины: проблема с подключением к интернету или ваша жалоба уже была принята.",
27
+ "Flag": "",
28
+ "Flag Message": "",
29
+ "Flag action failed either due to a network issue or the message is already flagged": "",
30
30
  "How about sending your first message to a friend?": "",
31
31
  "Instant Commands": "",
32
32
  "Let's start chatting!": "",
@@ -35,41 +35,41 @@
35
35
  "Loading messages...": "",
36
36
  "Loading...": "",
37
37
  "Maximum file size upload limit reached. Please upload a file below {{MAX_FILE_SIZE_TO_UPLOAD_IN_MB}} MB.": "Достигнут предел максимального размера файла для загрузки. Загрузите файл размером менее {{MAX_FILE_SIZE_TO_UPLOAD_IN_MB}} МБ.",
38
- "Message Reactions": "",
38
+ "Message Reactions": "Сообщения Реакции",
39
39
  "Message deleted": "",
40
- "Message flagged": "Сообщение отмечено",
41
- "Mute User": "Отключить пользователя",
42
- "Not supported": "",
40
+ "Message flagged": "",
41
+ "Mute User": "",
42
+ "Not supported": "не поддерживается",
43
43
  "Nothing yet...": "",
44
- "Ok": "",
44
+ "Ok": "",
45
45
  "Only visible to you": "",
46
46
  "Open Settings": "",
47
- "Photo": "",
47
+ "Photo": "Фото",
48
48
  "Photos and Videos": "",
49
- "Pin to Conversation": "Закрепить к беседе",
49
+ "Pin to Conversation": "",
50
50
  "Pinned by": "",
51
51
  "Please enable access to your photos and videos so you can share them.": "",
52
52
  "Please select a channel first": "Пожалуйста, сначала выберите канал",
53
53
  "Reconnecting...": "",
54
- "Reply": "Ответить",
54
+ "Reply": "",
55
55
  "Reply to Message": "",
56
- "Resend": "Отправить",
57
- "Search GIFs": "",
56
+ "Resend": "",
57
+ "Search GIFs": "Поиск GIF",
58
58
  "Select More Photos": "",
59
- "Send Anyway": "Всё равно отправить",
60
- "Send a message": "",
59
+ "Send Anyway": "",
60
+ "Send a message": "Отправить сообщение",
61
61
  "Sending links is not allowed in this conversation": "Отправка ссылок недоступна в этом чате",
62
- "Slow mode ON": "",
63
- "The message has been reported to a moderator.": "Сообщение отправлено модератору.",
64
- "Thread Reply": "Тема Ответить",
65
- "Unblock User": "Разблокировать пользователя",
62
+ "Slow mode ON": "Медленный режим включен",
63
+ "The message has been reported to a moderator.": "",
64
+ "Thread Reply": "",
65
+ "Unblock User": "",
66
66
  "Unknown User": "",
67
- "Unmute User": "Включить микрофон",
68
- "Unpin from Conversation": "Открепить от беседы",
69
- "Unread Messages": "Непрочитанные Сообщения",
70
- "Video": "",
67
+ "Unmute User": "",
68
+ "Unpin from Conversation": "",
69
+ "Unread Messages": "",
70
+ "Video": "видео",
71
71
  "You": "",
72
- "You can't send messages in this channel": "Вы не можете отправлять сообщения в этот канал",
72
+ "You can't send messages in this channel": "",
73
73
  "{{ firstUser }} and {{ nonSelfUserLength }} more are typing": "",
74
74
  "{{ index }} of {{ photoLength }}": "",
75
75
  "{{ replyCount }} Replies": "",
@@ -4,19 +4,19 @@
4
4
  "Allow access to your Gallery": "",
5
5
  "Allow camera access in device settings": "",
6
6
  "Also send to channel": "Kanala da gönder",
7
- "Are you sure you want to permanently delete this message?": "Bu mesajı kalıcı olarak silmek istediğinizden emin misiniz?",
8
- "Are you sure?": "Emin misiniz?",
9
- "Block User": "Kullanıcıyı engelle",
10
- "Cancel": "İptal",
11
- "Cannot Flag Message": "Raporlama Başarısız",
12
- "Consider how your comment might make others feel and be sure to follow our Community Guidelines": "Yorumunuzun diğerlerini nasıl hissettirebileceğini düşünün ve topluluk kurallarımızı takip ettiğinizden emin olun",
13
- "Copy Message": "Mesajı Kopyala",
14
- "Delete": "Sil",
15
- "Delete Message": "Mesajı Sil",
7
+ "Are you sure you want to permanently delete this message?": "",
8
+ "Are you sure?": "",
9
+ "Block User": "",
10
+ "Cancel": "",
11
+ "Cannot Flag Message": "",
12
+ "Consider how your comment might make others feel and be sure to follow our Community Guidelines": "",
13
+ "Copy Message": "",
14
+ "Delete": "",
15
+ "Delete Message": "",
16
16
  "Device camera is used to take photos or videos.": "",
17
- "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?",
18
- "Edit Message": "Mesajı Düzenle",
19
- "Editing Message": "",
17
+ "Do you want to send a copy of this message to a moderator for further investigation?": "",
18
+ "Edit Message": "",
19
+ "Editing Message": "Mesaj Düzenleniyor",
20
20
  "Emoji matching": "",
21
21
  "Empty message...": "",
22
22
  "Error loading": "",
@@ -24,9 +24,9 @@
24
24
  "Error loading messages for this channel...": "",
25
25
  "Error while loading, please reload/refresh": "",
26
26
  "File type not supported": "",
27
- "Flag": "Raporla",
28
- "Flag Message": "Mesajı Raporla",
29
- "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.",
27
+ "Flag": "",
28
+ "Flag Message": "",
29
+ "Flag action failed either due to a network issue or the message is already flagged": "",
30
30
  "How about sending your first message to a friend?": "",
31
31
  "Instant Commands": "",
32
32
  "Let's start chatting!": "",
@@ -35,41 +35,41 @@
35
35
  "Loading messages...": "",
36
36
  "Loading...": "",
37
37
  "Maximum file size upload limit reached. Please upload a file below {{MAX_FILE_SIZE_TO_UPLOAD_IN_MB}} MB.": "Maksimum dosya boyutu yükleme sınırına ulaşıldı. Lütfen {{MAX_FILE_SIZE_TO_UPLOAD_IN_MB}} MB'ın altında bir dosya yükleyin.",
38
- "Message Reactions": "",
38
+ "Message Reactions": "Mesaj Tepkileri",
39
39
  "Message deleted": "",
40
- "Message flagged": "Mesaj işaretlendi",
41
- "Mute User": "Kullanıcıyı sessize al",
42
- "Not supported": "",
40
+ "Message flagged": "",
41
+ "Mute User": "",
42
+ "Not supported": "Desteklenmiyor",
43
43
  "Nothing yet...": "",
44
- "Ok": "Tamam",
44
+ "Ok": "",
45
45
  "Only visible to you": "",
46
46
  "Open Settings": "",
47
- "Photo": "",
47
+ "Photo": "Fotoğraf",
48
48
  "Photos and Videos": "",
49
- "Pin to Conversation": "Konuşmaya sabitle",
49
+ "Pin to Conversation": "",
50
50
  "Pinned by": "",
51
51
  "Please enable access to your photos and videos so you can share them.": "",
52
52
  "Please select a channel first": "Lütfen önce bir kanal seçiniz",
53
53
  "Reconnecting...": "",
54
- "Reply": "Yanıtla",
54
+ "Reply": "",
55
55
  "Reply to Message": "",
56
- "Resend": "Yeniden gönder",
57
- "Search GIFs": "",
56
+ "Resend": "",
57
+ "Search GIFs": "GIF Ara",
58
58
  "Select More Photos": "",
59
- "Send Anyway": "Yine de Gönder",
60
- "Send a message": "",
59
+ "Send Anyway": "",
60
+ "Send a message": "Mesaj gönder",
61
61
  "Sending links is not allowed in this conversation": "Bu konuşmada bağlantı göndermek desteklenmiyor",
62
- "Slow mode ON": "",
63
- "The message has been reported to a moderator.": "Mesaj moderatöre bildirildi.",
64
- "Thread Reply": "Konu Yanıtı",
65
- "Unblock User": "Kullanıcının engelini kaldır",
62
+ "Slow mode ON": "Yavaş Mod Açık",
63
+ "The message has been reported to a moderator.": "",
64
+ "Thread Reply": "",
65
+ "Unblock User": "",
66
66
  "Unknown User": "",
67
- "Unmute User": "Kullanıcının sesini aç",
68
- "Unpin from Conversation": "Sabitlemeyi kaldır",
69
- "Unread Messages": "Okunmamış Mesajlar",
70
- "Video": "",
67
+ "Unmute User": "",
68
+ "Unpin from Conversation": "",
69
+ "Unread Messages": "",
70
+ "Video": "Video",
71
71
  "You": "",
72
- "You can't send messages in this channel": "Bu konuşmaya mesaj gönderemezsiniz",
72
+ "You can't send messages in this channel": "",
73
73
  "{{ firstUser }} and {{ nonSelfUserLength }} more are typing": "",
74
74
  "{{ index }} of {{ photoLength }}": "",
75
75
  "{{ replyCount }} Replies": "",
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.24.0-beta.4",
4
+ "version": "5.24.0-beta.6",
5
5
  "author": {
6
6
  "company": "Stream.io Inc",
7
7
  "name": "Stream.io Inc"
@@ -29,6 +29,7 @@ export type AttachmentPropsWithContext<
29
29
  | 'Giphy'
30
30
  | 'isAttachmentEqual'
31
31
  | 'UrlPreview'
32
+ | 'myMessageTheme'
32
33
  > & {
33
34
  /**
34
35
  * The attachment to render
@@ -106,8 +107,12 @@ const areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = Default
106
107
  prevProps: AttachmentPropsWithContext<StreamChatGenerics>,
107
108
  nextProps: AttachmentPropsWithContext<StreamChatGenerics>,
108
109
  ) => {
109
- const { attachment: prevAttachment, isAttachmentEqual } = prevProps;
110
- const { attachment: nextAttachment } = nextProps;
110
+ const {
111
+ attachment: prevAttachment,
112
+ isAttachmentEqual,
113
+ myMessageTheme: prevMyMessageTheme,
114
+ } = prevProps;
115
+ const { attachment: nextAttachment, myMessageTheme: nextMyMessageTheme } = nextProps;
111
116
 
112
117
  const attachmentEqual =
113
118
  prevAttachment.actions?.length === nextAttachment.actions?.length &&
@@ -119,6 +124,10 @@ const areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = Default
119
124
  return isAttachmentEqual(prevAttachment, nextAttachment);
120
125
  }
121
126
 
127
+ const messageThemeEqual =
128
+ JSON.stringify(prevMyMessageTheme) === JSON.stringify(nextMyMessageTheme);
129
+ if (!messageThemeEqual) return false;
130
+
122
131
  return true;
123
132
  };
124
133
 
@@ -138,6 +147,7 @@ export type AttachmentProps<
138
147
  | 'Gallery'
139
148
  | 'Giphy'
140
149
  | 'giphyVersion'
150
+ | 'myMessageTheme'
141
151
  | 'UrlPreview'
142
152
  | 'isAttachmentEqual'
143
153
  >
@@ -160,6 +170,7 @@ export const Attachment = <
160
170
  Gallery: PropGallery,
161
171
  Giphy: PropGiphy,
162
172
  giphyVersion: PropGiphyVersion,
173
+ myMessageTheme: PropMyMessageTheme,
163
174
  UrlPreview: PropUrlPreview,
164
175
  } = props;
165
176
 
@@ -171,6 +182,7 @@ export const Attachment = <
171
182
  Giphy: ContextGiphy,
172
183
  giphyVersion: ContextGiphyVersion,
173
184
  isAttachmentEqual,
185
+ myMessageTheme: ContextMyMessageTheme,
174
186
  UrlPreview: ContextUrlPreview,
175
187
  } = useMessagesContext<StreamChatGenerics>();
176
188
 
@@ -186,6 +198,7 @@ export const Attachment = <
186
198
  const Giphy = PropGiphy || ContextGiphy || GiphyDefault;
187
199
  const UrlPreview = PropUrlPreview || ContextUrlPreview || CardDefault;
188
200
  const giphyVersion = PropGiphyVersion || ContextGiphyVersion;
201
+ const myMessageTheme = PropMyMessageTheme || ContextMyMessageTheme;
189
202
 
190
203
  return (
191
204
  <MemoizedAttachment
@@ -198,6 +211,7 @@ export const Attachment = <
198
211
  Giphy,
199
212
  giphyVersion,
200
213
  isAttachmentEqual,
214
+ myMessageTheme,
201
215
  UrlPreview,
202
216
  }}
203
217
  />
@@ -92,7 +92,7 @@ export type CardPropsWithContext<
92
92
  > &
93
93
  Pick<
94
94
  MessagesContextValue<StreamChatGenerics>,
95
- 'additionalTouchableProps' | 'CardCover' | 'CardFooter' | 'CardHeader'
95
+ 'additionalTouchableProps' | 'CardCover' | 'CardFooter' | 'CardHeader' | 'myMessageTheme'
96
96
  > & {
97
97
  channelId: string | undefined;
98
98
  messageId: string | undefined;
@@ -287,14 +287,31 @@ const CardWithContext = <
287
287
  );
288
288
  };
289
289
 
290
- const MemoizedCard = React.memo(CardWithContext, () => true) as typeof CardWithContext;
290
+ const areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(
291
+ prevProps: CardPropsWithContext<StreamChatGenerics>,
292
+ nextProps: CardPropsWithContext<StreamChatGenerics>,
293
+ ) => {
294
+ const { myMessageTheme: prevMyMessageTheme } = prevProps;
295
+ const { myMessageTheme: nextMyMessageTheme } = nextProps;
296
+
297
+ const messageThemeEqual =
298
+ JSON.stringify(prevMyMessageTheme) === JSON.stringify(nextMyMessageTheme);
299
+ if (!messageThemeEqual) return false;
300
+
301
+ return true;
302
+ };
303
+
304
+ const MemoizedCard = React.memo(CardWithContext, areEqual) as typeof CardWithContext;
291
305
 
292
306
  export type CardProps<
293
307
  StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,
294
308
  > = Attachment<StreamChatGenerics> &
295
309
  Partial<
296
310
  Pick<ChatContextValue<StreamChatGenerics>, 'ImageComponent'> &
297
- Pick<MessageContextValue<StreamChatGenerics>, 'onLongPress' | 'onPress' | 'onPressIn'> &
311
+ Pick<
312
+ MessageContextValue<StreamChatGenerics>,
313
+ 'onLongPress' | 'onPress' | 'onPressIn' | 'myMessageTheme'
314
+ > &
298
315
  Pick<
299
316
  MessagesContextValue<StreamChatGenerics>,
300
317
  'additionalTouchableProps' | 'CardCover' | 'CardFooter' | 'CardHeader'
@@ -312,7 +329,7 @@ export const Card = <
312
329
  const { ImageComponent } = useChatContext<StreamChatGenerics>();
313
330
  const { message, onLongPress, onPress, onPressIn, preventPress } =
314
331
  useMessageContext<StreamChatGenerics>();
315
- const { additionalTouchableProps, CardCover, CardFooter, CardHeader } =
332
+ const { additionalTouchableProps, CardCover, CardFooter, CardHeader, myMessageTheme } =
316
333
  useMessagesContext<StreamChatGenerics>();
317
334
 
318
335
  return (
@@ -326,6 +343,7 @@ export const Card = <
326
343
  channelId: message.cid,
327
344
  ImageComponent,
328
345
  messageId: message.id,
346
+ myMessageTheme,
329
347
  onLongPress,
330
348
  onPress,
331
349
  onPressIn,
@@ -57,6 +57,7 @@ export type GalleryPropsWithContext<
57
57
  | 'VideoThumbnail'
58
58
  | 'ImageLoadingIndicator'
59
59
  | 'ImageLoadingFailedIndicator'
60
+ | 'myMessageTheme'
60
61
  > &
61
62
  Pick<OverlayContextValue, 'setOverlay'> & {
62
63
  channelId: string | undefined;
@@ -486,6 +487,7 @@ const areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = Default
486
487
  hasThreadReplies: prevHasThreadReplies,
487
488
  images: prevImages,
488
489
  message: prevMessage,
490
+ myMessageTheme: prevMyMessageTheme,
489
491
  videos: prevVideos,
490
492
  } = prevProps;
491
493
  const {
@@ -493,6 +495,7 @@ const areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = Default
493
495
  hasThreadReplies: nextHasThreadReplies,
494
496
  images: nextImages,
495
497
  message: nextMessage,
498
+ myMessageTheme: nextMyMessageTheme,
496
499
  videos: nextVideos,
497
500
  } = nextProps;
498
501
 
@@ -526,6 +529,10 @@ const areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = Default
526
529
  );
527
530
  if (!videosEqual) return false;
528
531
 
532
+ const messageThemeEqual =
533
+ JSON.stringify(prevMyMessageTheme) === JSON.stringify(nextMyMessageTheme);
534
+ if (!messageThemeEqual) return false;
535
+
529
536
  return true;
530
537
  };
531
538
 
@@ -552,6 +559,7 @@ export const Gallery = <
552
559
  ImageLoadingIndicator: PropImageLoadingIndicator,
553
560
  images: propImages,
554
561
  message: propMessage,
562
+ myMessageTheme: propMyMessageTheme,
555
563
  onLongPress: propOnLongPress,
556
564
  onPress: propOnPress,
557
565
  onPressIn: propOnPressIn,
@@ -582,6 +590,7 @@ export const Gallery = <
582
590
  ImageLoadingFailedIndicator: ContextImageLoadingFailedIndicator,
583
591
  ImageLoadingIndicator: ContextImageLoadingIndicator,
584
592
  legacyImageViewerSwipeBehaviour,
593
+ myMessageTheme: contextMyMessageTheme,
585
594
  VideoThumbnail: ContextVideoThumnbnail,
586
595
  } = useMessagesContext<StreamChatGenerics>();
587
596
  const { setOverlay: contextSetOverlay } = useOverlayContext();
@@ -607,6 +616,7 @@ export const Gallery = <
607
616
  const ImageLoadingFailedIndicator =
608
617
  PropImageLoadingFailedIndicator || ContextImageLoadingFailedIndicator;
609
618
  const ImageLoadingIndicator = PropImageLoadingIndicator || ContextImageLoadingIndicator;
619
+ const myMessageTheme = propMyMessageTheme || contextMyMessageTheme;
610
620
 
611
621
  return (
612
622
  <MemoizedGallery
@@ -621,6 +631,7 @@ export const Gallery = <
621
631
  images,
622
632
  legacyImageViewerSwipeBehaviour,
623
633
  message,
634
+ myMessageTheme,
624
635
  onLongPress,
625
636
  onPress,
626
637
  onPressIn,
@@ -674,6 +674,7 @@ const MessageWithContext = <
674
674
  members,
675
675
  message,
676
676
  messageContentOrder,
677
+ myMessageTheme: messagesContext.myMessageTheme,
677
678
  onLongPress: onLongPressMessage,
678
679
  onlyEmojis,
679
680
  onOpenThread,
@@ -774,6 +775,7 @@ const areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = Default
774
775
  lastReceivedId: prevLastReceivedId,
775
776
  members: prevMembers,
776
777
  message: prevMessage,
778
+ messagesContext: prevMessagesContext,
777
779
  showUnreadUnderlay: prevShowUnreadUnderlay,
778
780
  t: prevT,
779
781
  } = prevProps;
@@ -785,6 +787,7 @@ const areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = Default
785
787
  lastReceivedId: nextLastReceivedId,
786
788
  members: nextMembers,
787
789
  message: nextMessage,
790
+ messagesContext: nextMessagesContext,
788
791
  showUnreadUnderlay: nextShowUnreadUnderlay,
789
792
  t: nextT,
790
793
  } = nextProps;
@@ -887,6 +890,12 @@ const areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = Default
887
890
  const targetedMessageEqual = prevIsTargetedMessage === nextIsTargetedMessage;
888
891
  if (!targetedMessageEqual) return false;
889
892
 
893
+ const prevMyMessageTheme = JSON.stringify(prevMessagesContext?.myMessageTheme);
894
+ const nextMyMessageTheme = JSON.stringify(nextMessagesContext?.myMessageTheme);
895
+
896
+ const messageThemeEqual = prevMyMessageTheme === nextMyMessageTheme;
897
+ if (!messageThemeEqual) return false;
898
+
890
899
  return true;
891
900
  };
892
901
 
@@ -91,6 +91,7 @@ export type MessageContentPropsWithContext<
91
91
  | 'MessageError'
92
92
  | 'MessageReplies'
93
93
  | 'MessageStatus'
94
+ | 'myMessageTheme'
94
95
  | 'onPressInMessage'
95
96
  | 'Reply'
96
97
  > &
@@ -417,6 +418,7 @@ const areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = Default
417
418
  members: prevMembers,
418
419
  message: prevMessage,
419
420
  messageContentOrder: prevMessageContentOrder,
421
+ myMessageTheme: prevMyMessageTheme,
420
422
  onlyEmojis: prevOnlyEmojis,
421
423
  otherAttachments: prevOtherAttachments,
422
424
  t: prevT,
@@ -430,6 +432,7 @@ const areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = Default
430
432
  members: nextMembers,
431
433
  message: nextMessage,
432
434
  messageContentOrder: nextMessageContentOrder,
435
+ myMessageTheme: nextMyMessageTheme,
433
436
  onlyEmojis: nextOnlyEmojis,
434
437
  otherAttachments: nextOtherAttachments,
435
438
  t: nextT,
@@ -525,6 +528,10 @@ const areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = Default
525
528
  const tDateTimeParserEqual = prevTDateTimeParser === nextTDateTimeParser;
526
529
  if (!tDateTimeParserEqual) return false;
527
530
 
531
+ const messageThemeEqual =
532
+ JSON.stringify(prevMyMessageTheme) === JSON.stringify(nextMyMessageTheme);
533
+ if (!messageThemeEqual) return false;
534
+
528
535
  return true;
529
536
  };
530
537
 
@@ -580,6 +587,7 @@ export const MessageContent = <
580
587
  MessageHeader,
581
588
  MessageReplies,
582
589
  MessageStatus,
590
+ myMessageTheme,
583
591
  Reply,
584
592
  } = useMessagesContext<StreamChatGenerics>();
585
593
  const { t, tDateTimeParser } = useTranslationContext();
@@ -610,6 +618,7 @@ export const MessageContent = <
610
618
  MessageHeader,
611
619
  MessageReplies,
612
620
  MessageStatus,
621
+ myMessageTheme,
613
622
  onLongPress,
614
623
  onlyEmojis,
615
624
  onPress,
@@ -29,6 +29,7 @@ export type MessageSimplePropsWithContext<
29
29
  Pick<
30
30
  MessagesContextValue<StreamChatGenerics>,
31
31
  | 'enableMessageGroupingByUser'
32
+ | 'myMessageTheme'
32
33
  | 'MessageAvatar'
33
34
  | 'MessageContent'
34
35
  | 'MessagePinnedHeader'
@@ -104,12 +105,14 @@ const areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = Default
104
105
  groupStyles: prevGroupStyles,
105
106
  hasReactions: prevHasReactions,
106
107
  message: prevMessage,
108
+ myMessageTheme: prevMyMessageTheme,
107
109
  } = prevProps;
108
110
  const {
109
111
  channel: nextChannel,
110
112
  groupStyles: nextGroupStyles,
111
113
  hasReactions: nextHasReactions,
112
114
  message: nextMessage,
115
+ myMessageTheme: nextMyMessageTheme,
113
116
  } = nextProps;
114
117
 
115
118
  const hasReactionsEqual = prevHasReactions === nextHasReactions;
@@ -169,6 +172,10 @@ const areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = Default
169
172
  : prevMessage.latest_reactions === nextMessage.latest_reactions;
170
173
  if (!latestReactionsEqual) return false;
171
174
 
175
+ const messageThemeEqual =
176
+ JSON.stringify(prevMyMessageTheme) === JSON.stringify(nextMyMessageTheme);
177
+ if (!messageThemeEqual) return false;
178
+
172
179
  return true;
173
180
  };
174
181
 
@@ -197,6 +204,7 @@ export const MessageSimple = <
197
204
  MessageAvatar,
198
205
  MessageContent,
199
206
  MessagePinnedHeader,
207
+ myMessageTheme,
200
208
  ReactionList,
201
209
  } = useMessagesContext<StreamChatGenerics>();
202
210
 
@@ -212,6 +220,7 @@ export const MessageSimple = <
212
220
  MessageAvatar,
213
221
  MessageContent,
214
222
  MessagePinnedHeader,
223
+ myMessageTheme,
215
224
  ReactionList,
216
225
  }}
217
226
  {...props}
@@ -35,7 +35,10 @@ export type MessageTextContainerPropsWithContext<
35
35
  MessageContextValue<StreamChatGenerics>,
36
36
  'message' | 'onLongPress' | 'onlyEmojis' | 'onPress' | 'preventPress'
37
37
  > &
38
- Pick<MessagesContextValue<StreamChatGenerics>, 'markdownRules' | 'MessageText'> & {
38
+ Pick<
39
+ MessagesContextValue<StreamChatGenerics>,
40
+ 'markdownRules' | 'MessageText' | 'myMessageTheme'
41
+ > & {
39
42
  markdownStyles?: MarkdownStyle;
40
43
  messageOverlay?: boolean;
41
44
  messageTextNumberOfLines?: number;
@@ -120,11 +123,13 @@ const areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = Default
120
123
  const {
121
124
  markdownStyles: prevMarkdownStyles,
122
125
  message: prevMessage,
126
+ myMessageTheme: prevMyMessageTheme,
123
127
  onlyEmojis: prevOnlyEmojis,
124
128
  } = prevProps;
125
129
  const {
126
130
  markdownStyles: nextMarkdownStyles,
127
131
  message: nextMessage,
132
+ myMessageTheme: nextMyMessageTheme,
128
133
  onlyEmojis: nextOnlyEmojis,
129
134
  } = nextProps;
130
135
 
@@ -154,6 +159,10 @@ const areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = Default
154
159
  JSON.stringify(prevMarkdownStyles) === JSON.stringify(nextMarkdownStyles);
155
160
  if (!markdownStylesEqual) return false;
156
161
 
162
+ const messageThemeEqual =
163
+ JSON.stringify(prevMyMessageTheme) === JSON.stringify(nextMyMessageTheme);
164
+ if (!messageThemeEqual) return false;
165
+
157
166
  return true;
158
167
  };
159
168
 
@@ -173,7 +182,7 @@ export const MessageTextContainer = <
173
182
  ) => {
174
183
  const { message, onLongPress, onlyEmojis, onPress, preventPress } =
175
184
  useMessageContext<StreamChatGenerics>();
176
- const { markdownRules, MessageText } = useMessagesContext<StreamChatGenerics>();
185
+ const { markdownRules, MessageText, myMessageTheme } = useMessagesContext<StreamChatGenerics>();
177
186
  const { messageTextNumberOfLines } = props;
178
187
 
179
188
  return (
@@ -183,6 +192,7 @@ export const MessageTextContainer = <
183
192
  message,
184
193
  MessageText,
185
194
  messageTextNumberOfLines,
195
+ myMessageTheme,
186
196
  onLongPress,
187
197
  onlyEmojis,
188
198
  onPress,
@@ -30,6 +30,7 @@ export const useCreateMessageContext = <
30
30
  members,
31
31
  message,
32
32
  messageContentOrder,
33
+ myMessageTheme,
33
34
  onLongPress,
34
35
  onlyEmojis,
35
36
  onOpenThread,
@@ -54,6 +55,7 @@ export const useCreateMessageContext = <
54
55
  message.text
55
56
  }${message.reply_count}`;
56
57
  const membersValue = JSON.stringify(members);
58
+ const myMessageThemeString = useMemo(() => JSON.stringify(myMessageTheme), [myMessageTheme]);
57
59
 
58
60
  const quotedMessageDeletedValue = message.quoted_message?.deleted_at;
59
61
 
@@ -82,6 +84,7 @@ export const useCreateMessageContext = <
82
84
  members,
83
85
  message,
84
86
  messageContentOrder,
87
+ myMessageTheme,
85
88
  onLongPress,
86
89
  onlyEmojis,
87
90
  onOpenThread,
@@ -108,6 +111,7 @@ export const useCreateMessageContext = <
108
111
  lastReceivedId,
109
112
  membersValue,
110
113
  messageValue,
114
+ myMessageThemeString,
111
115
  reactionsValue,
112
116
  showAvatar,
113
117
  showMessageStatus,
@@ -40,8 +40,8 @@ const SendButtonWithContext = <
40
40
  testID='send-button'
41
41
  >
42
42
  {giphyActive && <Search pathFill={disabled ? grey_gainsboro : accent_blue} {...searchIcon} />}
43
- {!giphyActive && disabled && <SendRight pathFill={grey_gainsboro} {...sendUpIcon} />}
44
- {!giphyActive && !disabled && <SendUp pathFill={accent_blue} {...sendRightIcon} />}
43
+ {!giphyActive && disabled && <SendRight pathFill={grey_gainsboro} {...sendRightIcon} />}
44
+ {!giphyActive && !disabled && <SendUp pathFill={accent_blue} {...sendUpIcon} />}
45
45
  </Pressable>
46
46
  );
47
47
  };