stream-chat-react-native-core 5.24.0-beta.5 → 5.24.0

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 (90) 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/en.json +1 -1
  22. package/lib/commonjs/i18n/fr.json +54 -54
  23. package/lib/commonjs/i18n/hi.json +54 -54
  24. package/lib/commonjs/i18n/it.json +54 -54
  25. package/lib/commonjs/i18n/nl.json +54 -54
  26. package/lib/commonjs/i18n/ru.json +54 -54
  27. package/lib/commonjs/i18n/tr.json +54 -54
  28. package/lib/commonjs/version.json +1 -1
  29. package/lib/module/components/Attachment/Attachment.js +22 -14
  30. package/lib/module/components/Attachment/Attachment.js.map +1 -1
  31. package/lib/module/components/Attachment/Card.js +11 -4
  32. package/lib/module/components/Attachment/Card.js.map +1 -1
  33. package/lib/module/components/Attachment/Gallery.js +24 -16
  34. package/lib/module/components/Attachment/Gallery.js.map +1 -1
  35. package/lib/module/components/Message/Message.js +14 -7
  36. package/lib/module/components/Message/Message.js.map +1 -1
  37. package/lib/module/components/Message/MessageSimple/MessageContent.js +22 -16
  38. package/lib/module/components/Message/MessageSimple/MessageContent.js.map +1 -1
  39. package/lib/module/components/Message/MessageSimple/MessageSimple.js +14 -8
  40. package/lib/module/components/Message/MessageSimple/MessageSimple.js.map +1 -1
  41. package/lib/module/components/Message/MessageSimple/MessageTextContainer.js +10 -4
  42. package/lib/module/components/Message/MessageSimple/MessageTextContainer.js.map +1 -1
  43. package/lib/module/components/Message/hooks/useCreateMessageContext.js +6 -1
  44. package/lib/module/components/Message/hooks/useCreateMessageContext.js.map +1 -1
  45. package/lib/module/components/MessageOverlay/MessageOverlay.js +9 -3
  46. package/lib/module/components/MessageOverlay/MessageOverlay.js.map +1 -1
  47. package/lib/module/contexts/messageContext/MessageContext.js +2 -2
  48. package/lib/module/contexts/messageContext/MessageContext.js.map +1 -1
  49. package/lib/module/i18n/en.json +1 -1
  50. package/lib/module/i18n/fr.json +54 -54
  51. package/lib/module/i18n/hi.json +54 -54
  52. package/lib/module/i18n/it.json +54 -54
  53. package/lib/module/i18n/nl.json +54 -54
  54. package/lib/module/i18n/ru.json +54 -54
  55. package/lib/module/i18n/tr.json +54 -54
  56. package/lib/module/version.json +1 -1
  57. package/lib/typescript/components/Attachment/Attachment.d.ts +2 -2
  58. package/lib/typescript/components/Attachment/Card.d.ts +2 -2
  59. package/lib/typescript/components/Attachment/Gallery.d.ts +1 -1
  60. package/lib/typescript/components/Message/MessageSimple/MessageContent.d.ts +1 -1
  61. package/lib/typescript/components/Message/MessageSimple/MessageSimple.d.ts +1 -1
  62. package/lib/typescript/components/Message/MessageSimple/MessageTextContainer.d.ts +1 -1
  63. package/lib/typescript/components/Message/hooks/useCreateMessageContext.d.ts +1 -1
  64. package/lib/typescript/contexts/messageContext/MessageContext.d.ts +8 -2
  65. package/lib/typescript/i18n/en.json +1 -1
  66. package/lib/typescript/i18n/fr.json +54 -54
  67. package/lib/typescript/i18n/hi.json +54 -54
  68. package/lib/typescript/i18n/it.json +54 -54
  69. package/lib/typescript/i18n/nl.json +54 -54
  70. package/lib/typescript/i18n/ru.json +54 -54
  71. package/lib/typescript/i18n/tr.json +54 -54
  72. package/package.json +1 -1
  73. package/src/components/Attachment/Attachment.tsx +16 -2
  74. package/src/components/Attachment/Card.tsx +22 -4
  75. package/src/components/Attachment/Gallery.tsx +11 -0
  76. package/src/components/Message/Message.tsx +9 -0
  77. package/src/components/Message/MessageSimple/MessageContent.tsx +9 -0
  78. package/src/components/Message/MessageSimple/MessageSimple.tsx +9 -0
  79. package/src/components/Message/MessageSimple/MessageTextContainer.tsx +12 -2
  80. package/src/components/Message/hooks/useCreateMessageContext.ts +4 -0
  81. package/src/components/MessageOverlay/MessageOverlay.tsx +8 -0
  82. package/src/contexts/messageContext/MessageContext.tsx +7 -1
  83. package/src/i18n/en.json +1 -1
  84. package/src/i18n/fr.json +54 -54
  85. package/src/i18n/hi.json +54 -54
  86. package/src/i18n/it.json +54 -54
  87. package/src/i18n/nl.json +54 -54
  88. package/src/i18n/ru.json +54 -54
  89. package/src/i18n/tr.json +54 -54
  90. package/src/version.json +1 -1
@@ -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/en.json CHANGED
@@ -26,7 +26,7 @@
26
26
  "File type not supported": "File type not supported",
27
27
  "Flag": "Flag",
28
28
  "Flag Message": "Flag Message",
29
- "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",
29
+ "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.",
30
30
  "How about sending your first message to a friend?": "How about sending your first message to a friend?",
31
31
  "Instant Commands": "Instant Commands",
32
32
  "Let's start chatting!": "Let's start chatting!",
package/src/i18n/fr.json CHANGED
@@ -1,79 +1,79 @@
1
1
  {
2
2
  "1 Reply": "1 Réponse",
3
- "1 Thread Reply": "",
3
+ "1 Thread Reply": "Réponse à 1 fil",
4
4
  "Allow access to your Gallery": "Autoriser l'accès à votre galerie",
5
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": "",
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": "",
6
+ "Also send to channel": "Envoyer également à la chaîne",
7
+ "Are you sure you want to permanently delete this message?": "Êtes-vous sûr de vouloir supprimer définitivement ce message?",
8
+ "Are you sure?": "Es-tu sûr ?",
9
+ "Block User": "Bloquer un utilisateur",
10
+ "Cancel": "Annuler",
11
+ "Cannot Flag Message": "Impossible de signaler le message",
12
+ "Consider how your comment might make others feel and be sure to follow our Community Guidelines": "Considérez comment votre commentaire pourrait faire sentir les autres et assurez-vous de suivre nos directives communautaires",
13
+ "Copy Message": "Copier le message",
14
+ "Delete": "Supprimer",
15
+ "Delete Message": "Supprimer un message",
16
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.",
17
- "Do you want to send a copy of this message to a moderator for further investigation?": "",
18
- "Edit Message": "",
17
+ "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?",
18
+ "Edit Message": "Éditer un message",
19
19
  "Editing Message": "Édite un message",
20
20
  "Emoji matching": "Correspondance Emoji",
21
- "Empty message...": "",
22
- "Error loading": "",
23
- "Error loading channel list...": "",
24
- "Error loading messages for this channel...": "",
25
- "Error while loading, please reload/refresh": "",
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": "",
30
- "How about sending your first message to a friend?": "",
21
+ "Empty message...": "Message vide...",
22
+ "Error loading": "Erreur lors du chargement",
23
+ "Error loading channel list...": "Erreur lors du chargement de la liste de canaux...",
24
+ "Error loading messages for this channel...": "Erreur lors du chargement des messages de ce canal...",
25
+ "Error while loading, please reload/refresh": "Erreur lors du chargement, veuillez recharger/rafraîchir",
26
+ "File type not supported": "Le type de fichier n'est pas pris en charge",
27
+ "Flag": "Signaler",
28
+ "Flag Message": "Signaler le message",
29
+ "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é.",
30
+ "How about sending your first message to a friend?": "Et si vous envoyiez votre premier message à un ami ?",
31
31
  "Instant Commands": "Commandes Instantanées",
32
- "Let's start chatting!": "",
33
- "Links are disabled": "",
32
+ "Let's start chatting!": "Commençons à discuter !",
33
+ "Links are disabled": "Links are disabled",
34
34
  "Loading channels...": "Chargement des canaux...",
35
35
  "Loading messages...": "Chargement des messages...",
36
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": "",
39
- "Message deleted": "",
40
- "Message flagged": "",
41
- "Mute User": "",
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
+ "Message deleted": "Message supprimé",
40
+ "Message flagged": "Message signalé",
41
+ "Mute User": "Utilisateur muet",
42
42
  "Not supported": "Non pris en charge",
43
- "Nothing yet...": "",
44
- "Ok": "",
45
- "Only visible to you": "",
43
+ "Nothing yet...": "Aucun message...",
44
+ "Ok": "Ok",
45
+ "Only visible to you": "Seulement visible par vous",
46
46
  "Open Settings": "Ouvrir les paramètres",
47
- "Photo": "",
47
+ "Photo": "Photo",
48
48
  "Photos and Videos": "Photos et vidéos",
49
- "Pin to Conversation": "",
50
- "Pinned by": "",
49
+ "Pin to Conversation": "Épingler à la conversation",
50
+ "Pinned by": "Épinglé par",
51
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.",
52
52
  "Please select a channel first": "Veuillez d'abord selectionnez un canal",
53
- "Reconnecting...": "",
54
- "Reply": "",
53
+ "Reconnecting...": "Se Reconnecter...",
54
+ "Reply": "Répondre",
55
55
  "Reply to Message": "Répondre au message",
56
- "Resend": "",
56
+ "Resend": "Renvoyer",
57
57
  "Search GIFs": "Rechercher des GIF",
58
58
  "Select More Photos": "Sélectionner plus de photos",
59
- "Send Anyway": "",
59
+ "Send Anyway": "Envoyer quand même",
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
- "The message has been reported to a moderator.": "",
64
- "Thread Reply": "",
65
- "Unblock User": "",
63
+ "The message has been reported to a moderator.": "Le message a été signalé à un modérateur.",
64
+ "Thread Reply": "Réponse à la discussion",
65
+ "Unblock User": "Débloquer Utilisateur",
66
66
  "Unknown User": "Utilisateur inconnu",
67
- "Unmute User": "",
68
- "Unpin from Conversation": "",
69
- "Unread Messages": "",
70
- "Video": "",
71
- "You": "",
72
- "You can't send messages in this channel": "",
73
- "{{ firstUser }} and {{ nonSelfUserLength }} more are typing": "",
67
+ "Unmute User": "Activer le son de Utilisateur",
68
+ "Unpin from Conversation": "Décrocher de la conversation",
69
+ "Unread Messages": "Messages non lus",
70
+ "Video": "Vidéo",
71
+ "You": "Toi",
72
+ "You can't send messages in this channel": "You can't send messages in this channel",
73
+ "{{ firstUser }} and {{ nonSelfUserLength }} more are typing": "{{ firstUser }} et {{ nonSelfUserLength }} autres sont en train d'écrire",
74
74
  "{{ index }} of {{ photoLength }}": "{{ index }} sur {{ photoLength }}",
75
75
  "{{ replyCount }} Replies": "{{ replyCount }} Réponses",
76
- "{{ replyCount }} Thread Replies": "",
77
- "{{ user }} is typing": "",
78
- "🏙 Attachment...": ""
76
+ "{{ replyCount }} Thread Replies": "{{replyCount}} Réponses à la discussion",
77
+ "{{ user }} is typing": "{{ user }} est en train d'écrire",
78
+ "🏙 Attachment...": "🏙 Pièce jointe..."
79
79
  }