stream-chat-react-native-core 5.24.0-beta.5 → 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 (86) 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/MessageOverlay/MessageOverlay.js +9 -3
  18. package/lib/commonjs/components/MessageOverlay/MessageOverlay.js.map +1 -1
  19. package/lib/commonjs/contexts/messageContext/MessageContext.js +2 -2
  20. package/lib/commonjs/contexts/messageContext/MessageContext.js.map +1 -1
  21. package/lib/commonjs/i18n/fr.json +24 -24
  22. package/lib/commonjs/i18n/hi.json +24 -24
  23. package/lib/commonjs/i18n/it.json +24 -24
  24. package/lib/commonjs/i18n/nl.json +24 -24
  25. package/lib/commonjs/i18n/ru.json +24 -24
  26. package/lib/commonjs/i18n/tr.json +24 -24
  27. package/lib/commonjs/version.json +1 -1
  28. package/lib/module/components/Attachment/Attachment.js +22 -14
  29. package/lib/module/components/Attachment/Attachment.js.map +1 -1
  30. package/lib/module/components/Attachment/Card.js +11 -4
  31. package/lib/module/components/Attachment/Card.js.map +1 -1
  32. package/lib/module/components/Attachment/Gallery.js +24 -16
  33. package/lib/module/components/Attachment/Gallery.js.map +1 -1
  34. package/lib/module/components/Message/Message.js +14 -7
  35. package/lib/module/components/Message/Message.js.map +1 -1
  36. package/lib/module/components/Message/MessageSimple/MessageContent.js +22 -16
  37. package/lib/module/components/Message/MessageSimple/MessageContent.js.map +1 -1
  38. package/lib/module/components/Message/MessageSimple/MessageSimple.js +14 -8
  39. package/lib/module/components/Message/MessageSimple/MessageSimple.js.map +1 -1
  40. package/lib/module/components/Message/MessageSimple/MessageTextContainer.js +10 -4
  41. package/lib/module/components/Message/MessageSimple/MessageTextContainer.js.map +1 -1
  42. package/lib/module/components/Message/hooks/useCreateMessageContext.js +6 -1
  43. package/lib/module/components/Message/hooks/useCreateMessageContext.js.map +1 -1
  44. package/lib/module/components/MessageOverlay/MessageOverlay.js +9 -3
  45. package/lib/module/components/MessageOverlay/MessageOverlay.js.map +1 -1
  46. package/lib/module/contexts/messageContext/MessageContext.js +2 -2
  47. package/lib/module/contexts/messageContext/MessageContext.js.map +1 -1
  48. package/lib/module/i18n/fr.json +24 -24
  49. package/lib/module/i18n/hi.json +24 -24
  50. package/lib/module/i18n/it.json +24 -24
  51. package/lib/module/i18n/nl.json +24 -24
  52. package/lib/module/i18n/ru.json +24 -24
  53. package/lib/module/i18n/tr.json +24 -24
  54. package/lib/module/version.json +1 -1
  55. package/lib/typescript/components/Attachment/Attachment.d.ts +2 -2
  56. package/lib/typescript/components/Attachment/Card.d.ts +2 -2
  57. package/lib/typescript/components/Attachment/Gallery.d.ts +1 -1
  58. package/lib/typescript/components/Message/MessageSimple/MessageContent.d.ts +1 -1
  59. package/lib/typescript/components/Message/MessageSimple/MessageSimple.d.ts +1 -1
  60. package/lib/typescript/components/Message/MessageSimple/MessageTextContainer.d.ts +1 -1
  61. package/lib/typescript/components/Message/hooks/useCreateMessageContext.d.ts +1 -1
  62. package/lib/typescript/contexts/messageContext/MessageContext.d.ts +8 -2
  63. package/lib/typescript/i18n/fr.json +24 -24
  64. package/lib/typescript/i18n/hi.json +24 -24
  65. package/lib/typescript/i18n/it.json +24 -24
  66. package/lib/typescript/i18n/nl.json +24 -24
  67. package/lib/typescript/i18n/ru.json +24 -24
  68. package/lib/typescript/i18n/tr.json +24 -24
  69. package/package.json +1 -1
  70. package/src/components/Attachment/Attachment.tsx +16 -2
  71. package/src/components/Attachment/Card.tsx +22 -4
  72. package/src/components/Attachment/Gallery.tsx +11 -0
  73. package/src/components/Message/Message.tsx +9 -0
  74. package/src/components/Message/MessageSimple/MessageContent.tsx +9 -0
  75. package/src/components/Message/MessageSimple/MessageSimple.tsx +9 -0
  76. package/src/components/Message/MessageSimple/MessageTextContainer.tsx +12 -2
  77. package/src/components/Message/hooks/useCreateMessageContext.ts +4 -0
  78. package/src/components/MessageOverlay/MessageOverlay.tsx +8 -0
  79. package/src/contexts/messageContext/MessageContext.tsx +7 -1
  80. package/src/i18n/fr.json +24 -24
  81. package/src/i18n/hi.json +24 -24
  82. package/src/i18n/it.json +24 -24
  83. package/src/i18n/nl.json +24 -24
  84. package/src/i18n/ru.json +24 -24
  85. package/src/i18n/tr.json +24 -24
  86. package/src/version.json +1 -1
@@ -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,
@@ -548,11 +548,13 @@ const areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = Default
548
548
  alignment: prevAlignment,
549
549
  message: prevMessage,
550
550
  messageReactionTitle: prevMessageReactionTitle,
551
+ messagesContext: prevMessagesContext,
551
552
  } = prevProps;
552
553
  const {
553
554
  alignment: nextAlignment,
554
555
  message: nextMessage,
555
556
  messageReactionTitle: nextMessageReactionTitle,
557
+ messagesContext: nextMessagesContext,
556
558
  } = nextProps;
557
559
 
558
560
  const alignmentEqual = prevAlignment === nextAlignment;
@@ -561,6 +563,12 @@ const areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = Default
561
563
  const messageReactionTitleEqual = prevMessageReactionTitle === nextMessageReactionTitle;
562
564
  if (!messageReactionTitleEqual) return false;
563
565
 
566
+ const prevMyMessageTheme = JSON.stringify(prevMessagesContext?.myMessageTheme);
567
+ const nextMyMessageTheme = JSON.stringify(nextMessagesContext?.myMessageTheme);
568
+
569
+ const myMessageThemeEqual = prevMyMessageTheme === nextMyMessageTheme;
570
+ if (!myMessageThemeEqual) return false;
571
+
564
572
  const latestReactionsEqual =
565
573
  Array.isArray(prevMessage?.latest_reactions) && Array.isArray(nextMessage?.latest_reactions)
566
574
  ? prevMessage?.latest_reactions.length === nextMessage?.latest_reactions.length &&
@@ -10,6 +10,8 @@ import type {
10
10
  import type { GroupType, MessageType } from '../../components/MessageList/hooks/useMessageList';
11
11
  import type { ChannelContextValue } from '../../contexts/channelContext/ChannelContext';
12
12
  import type { MessageContentType } from '../../contexts/messagesContext/MessagesContext';
13
+ import type { DeepPartial } from '../../contexts/themeContext/ThemeContext';
14
+ import type { Theme } from '../../contexts/themeContext/utils/theme';
13
15
  import type { DefaultStreamChatGenerics, UnknownType } from '../../types/types';
14
16
  import { DEFAULT_BASE_CONTEXT_VALUE } from '../utils/defaultBaseContextValue';
15
17
 
@@ -89,7 +91,7 @@ export type MessageContextValue<
89
91
  /** The images attached to a message */
90
92
  otherAttachments: Attachment<StreamChatGenerics>[];
91
93
  reactions: Reactions;
92
- showMessageOverlay: (messageReactions?: boolean) => void;
94
+ showMessageOverlay: (messageReactions?: boolean, error?: boolean) => void;
93
95
  showMessageStatus: boolean;
94
96
  /** Whether or not the Message is part of a Thread */
95
97
  threadList: boolean;
@@ -98,6 +100,10 @@ export type MessageContextValue<
98
100
  goToMessage?: (messageId: string) => void;
99
101
  /** Latest message id on current channel */
100
102
  lastReceivedId?: string;
103
+ /**
104
+ * Theme provided only to messages that are the current users
105
+ */
106
+ myMessageTheme?: DeepPartial<Theme>;
101
107
  /** Prevent message being pressed for image viewer view */
102
108
  preventPress?: boolean;
103
109
  /** Whether or not the avatar show show next to Message */
package/src/i18n/fr.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
- "1 Reply": "1 Réponse",
2
+ "1 Reply": "",
3
3
  "1 Thread Reply": "",
4
- "Allow access to your Gallery": "Autoriser l'accès à votre galerie",
5
- "Allow camera access in device settings": "Autoriser l'accès à la caméra dans les paramètres de l'appareil",
6
- "Also send to channel": "",
4
+ "Allow access to your Gallery": "",
5
+ "Allow camera access in device settings": "",
6
+ "Also send to channel": "Envoyer également à la chaîne",
7
7
  "Are you sure you want to permanently delete this message?": "",
8
8
  "Are you sure?": "",
9
9
  "Block User": "",
@@ -13,11 +13,11 @@
13
13
  "Copy Message": "",
14
14
  "Delete": "",
15
15
  "Delete Message": "",
16
- "Device camera is used to take photos or videos.": "L'appareil photo de l'appareil est utilisé pour prendre des photos ou des vidéos.",
16
+ "Device camera is used to take photos or videos.": "",
17
17
  "Do you want to send a copy of this message to a moderator for further investigation?": "",
18
18
  "Edit Message": "",
19
19
  "Editing Message": "Édite un message",
20
- "Emoji matching": "Correspondance Emoji",
20
+ "Emoji matching": "",
21
21
  "Empty message...": "",
22
22
  "Error loading": "",
23
23
  "Error loading channel list...": "",
@@ -28,14 +28,14 @@
28
28
  "Flag Message": "",
29
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
- "Instant Commands": "Commandes Instantanées",
31
+ "Instant Commands": "",
32
32
  "Let's start chatting!": "",
33
- "Links are disabled": "",
34
- "Loading channels...": "Chargement des canaux...",
35
- "Loading messages...": "Chargement des messages...",
36
- "Loading...": "Chargement...",
37
- "Maximum file size upload limit reached. Please upload a file below {{MAX_FILE_SIZE_TO_UPLOAD_IN_MB}} MB.": "",
38
- "Message Reactions": "",
33
+ "Links are disabled": "Links are disabled",
34
+ "Loading channels...": "",
35
+ "Loading messages...": "",
36
+ "Loading...": "",
37
+ "Maximum file size upload limit reached. Please upload a file below {{MAX_FILE_SIZE_TO_UPLOAD_IN_MB}} MB.": "Taille maximale de téléchargement de fichier atteinte. Veuillez télécharger un fichier inférieur à {{MAX_FILE_SIZE_TO_UPLOAD_IN_MB}} Mo.",
38
+ "Message Reactions": "Réactions aux messages",
39
39
  "Message deleted": "",
40
40
  "Message flagged": "",
41
41
  "Mute User": "",
@@ -43,36 +43,36 @@
43
43
  "Nothing yet...": "",
44
44
  "Ok": "",
45
45
  "Only visible to you": "",
46
- "Open Settings": "Ouvrir les paramètres",
47
- "Photo": "",
48
- "Photos and Videos": "Photos et vidéos",
46
+ "Open Settings": "",
47
+ "Photo": "Photo",
48
+ "Photos and Videos": "",
49
49
  "Pin to Conversation": "",
50
50
  "Pinned by": "",
51
- "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.",
51
+ "Please enable access to your photos and videos so you can share them.": "",
52
52
  "Please select a channel first": "Veuillez d'abord selectionnez un canal",
53
53
  "Reconnecting...": "",
54
54
  "Reply": "",
55
- "Reply to Message": "Répondre au message",
55
+ "Reply to Message": "",
56
56
  "Resend": "",
57
57
  "Search GIFs": "Rechercher des GIF",
58
- "Select More Photos": "Sélectionner plus de photos",
58
+ "Select More Photos": "",
59
59
  "Send Anyway": "",
60
60
  "Send a message": "Envoyer un message",
61
- "Sending links is not allowed in this conversation": "",
61
+ "Sending links is not allowed in this conversation": "Sending links is not allowed in this conversation",
62
62
  "Slow mode ON": "Mode lent activé",
63
63
  "The message has been reported to a moderator.": "",
64
64
  "Thread Reply": "",
65
65
  "Unblock User": "",
66
- "Unknown User": "Utilisateur inconnu",
66
+ "Unknown User": "",
67
67
  "Unmute User": "",
68
68
  "Unpin from Conversation": "",
69
69
  "Unread Messages": "",
70
- "Video": "",
70
+ "Video": "Vidéo",
71
71
  "You": "",
72
72
  "You can't send messages in this channel": "",
73
73
  "{{ firstUser }} and {{ nonSelfUserLength }} more are typing": "",
74
- "{{ index }} of {{ photoLength }}": "{{ index }} sur {{ photoLength }}",
75
- "{{ replyCount }} Replies": "{{ replyCount }} Réponses",
74
+ "{{ index }} of {{ photoLength }}": "",
75
+ "{{ replyCount }} Replies": "",
76
76
  "{{ replyCount }} Thread Replies": "",
77
77
  "{{ user }} is typing": "",
78
78
  "🏙 Attachment...": ""
package/src/i18n/hi.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
- "1 Reply": "1 रिप्लाई",
2
+ "1 Reply": "",
3
3
  "1 Thread Reply": "",
4
- "Allow access to your Gallery": "अपनी गैलरी तक पहुँचने की अनुमति दें",
5
- "Allow camera access in device settings": "डिवाइस सेटिंग्स में कैमरा एक्सेस की अनुमति दें",
6
- "Also send to channel": "",
4
+ "Allow access to your Gallery": "",
5
+ "Allow camera access in device settings": "",
6
+ "Also send to channel": "चैनल को भी भेजें",
7
7
  "Are you sure you want to permanently delete this message?": "",
8
8
  "Are you sure?": "",
9
9
  "Block User": "",
@@ -13,11 +13,11 @@
13
13
  "Copy Message": "",
14
14
  "Delete": "",
15
15
  "Delete Message": "",
16
- "Device camera is used to take photos or videos.": "डिवाइस कैमरे का उपयोग फ़ोटो या वीडियो लेने के लिए किया जाता है।",
16
+ "Device camera is used to take photos or videos.": "",
17
17
  "Do you want to send a copy of this message to a moderator for further investigation?": "",
18
18
  "Edit Message": "",
19
19
  "Editing Message": "मैसेज बदला जा रहा है",
20
- "Emoji matching": "इमोजी मिलान",
20
+ "Emoji matching": "",
21
21
  "Empty message...": "",
22
22
  "Error loading": "",
23
23
  "Error loading channel list...": "",
@@ -28,14 +28,14 @@
28
28
  "Flag Message": "",
29
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
- "Instant Commands": "त्वरित कमांड",
31
+ "Instant Commands": "",
32
32
  "Let's start chatting!": "",
33
- "Links are disabled": "",
34
- "Loading channels...": "चैनल लोड हो रहे हैं...",
35
- "Loading messages...": "मेसेजस लोड हो रहे हैं...",
36
- "Loading...": "लोड हो रहा है...",
37
- "Maximum file size upload limit reached. Please upload a file below {{MAX_FILE_SIZE_TO_UPLOAD_IN_MB}} MB.": "",
38
- "Message Reactions": "",
33
+ "Links are disabled": "लिंक अक्षम हैं",
34
+ "Loading channels...": "",
35
+ "Loading messages...": "",
36
+ "Loading...": "",
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": "संदेश प्रतिक्रियाएँ",
39
39
  "Message deleted": "",
40
40
  "Message flagged": "",
41
41
  "Mute User": "",
@@ -43,36 +43,36 @@
43
43
  "Nothing yet...": "",
44
44
  "Ok": "",
45
45
  "Only visible to you": "",
46
- "Open Settings": "सेटिंग्स खोलें",
47
- "Photo": "",
48
- "Photos and Videos": "तस्वीरें और वीडियों",
46
+ "Open Settings": "",
47
+ "Photo": "तस्वीर",
48
+ "Photos and Videos": "",
49
49
  "Pin to Conversation": "",
50
50
  "Pinned by": "",
51
- "Please enable access to your photos and videos so you can share them.": "कृपया अपनी फ़ोटो और वीडियो तक पहुंच सक्षम करें ताकि आप उन्हें साझा कर सकें।",
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
54
  "Reply": "",
55
- "Reply to Message": "संदेश का जवाब दें",
55
+ "Reply to Message": "",
56
56
  "Resend": "",
57
57
  "Search GIFs": "GIF खोजें",
58
- "Select More Photos": "अधिक फ़ोटो चुनें",
58
+ "Select More Photos": "",
59
59
  "Send Anyway": "",
60
60
  "Send a message": "एक संदेश भेजें",
61
- "Sending links is not allowed in this conversation": "",
61
+ "Sending links is not allowed in this conversation": "इस बातचीत में लिंक भेजने की अनुमति नहीं है",
62
62
  "Slow mode ON": "स्लो मोड चालू",
63
63
  "The message has been reported to a moderator.": "",
64
64
  "Thread Reply": "",
65
65
  "Unblock User": "",
66
- "Unknown User": "अज्ञात उपयोगकर्ता",
66
+ "Unknown User": "",
67
67
  "Unmute User": "",
68
68
  "Unpin from Conversation": "",
69
69
  "Unread Messages": "",
70
- "Video": "",
70
+ "Video": "वीडियो",
71
71
  "You": "",
72
72
  "You can't send messages in this channel": "",
73
73
  "{{ firstUser }} and {{ nonSelfUserLength }} more are typing": "",
74
- "{{ index }} of {{ photoLength }}": "{{ index }} / {{ photoLength }}",
75
- "{{ replyCount }} Replies": "{{ replyCount }} रिप्लाई",
74
+ "{{ index }} of {{ photoLength }}": "",
75
+ "{{ replyCount }} Replies": "",
76
76
  "{{ replyCount }} Thread Replies": "",
77
77
  "{{ user }} is typing": "",
78
78
  "🏙 Attachment...": ""