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.
- package/lib/commonjs/components/Attachment/Attachment.js +22 -14
- package/lib/commonjs/components/Attachment/Attachment.js.map +1 -1
- package/lib/commonjs/components/Attachment/Card.js +11 -4
- package/lib/commonjs/components/Attachment/Card.js.map +1 -1
- package/lib/commonjs/components/Attachment/Gallery.js +24 -16
- package/lib/commonjs/components/Attachment/Gallery.js.map +1 -1
- package/lib/commonjs/components/Message/Message.js +14 -7
- package/lib/commonjs/components/Message/Message.js.map +1 -1
- package/lib/commonjs/components/Message/MessageSimple/MessageContent.js +22 -16
- package/lib/commonjs/components/Message/MessageSimple/MessageContent.js.map +1 -1
- package/lib/commonjs/components/Message/MessageSimple/MessageSimple.js +14 -8
- package/lib/commonjs/components/Message/MessageSimple/MessageSimple.js.map +1 -1
- package/lib/commonjs/components/Message/MessageSimple/MessageTextContainer.js +10 -4
- package/lib/commonjs/components/Message/MessageSimple/MessageTextContainer.js.map +1 -1
- package/lib/commonjs/components/Message/hooks/useCreateMessageContext.js +6 -1
- package/lib/commonjs/components/Message/hooks/useCreateMessageContext.js.map +1 -1
- package/lib/commonjs/components/MessageOverlay/MessageOverlay.js +9 -3
- package/lib/commonjs/components/MessageOverlay/MessageOverlay.js.map +1 -1
- package/lib/commonjs/contexts/messageContext/MessageContext.js +2 -2
- package/lib/commonjs/contexts/messageContext/MessageContext.js.map +1 -1
- package/lib/commonjs/i18n/en.json +1 -1
- package/lib/commonjs/i18n/fr.json +54 -54
- package/lib/commonjs/i18n/hi.json +54 -54
- package/lib/commonjs/i18n/it.json +54 -54
- package/lib/commonjs/i18n/nl.json +54 -54
- package/lib/commonjs/i18n/ru.json +54 -54
- package/lib/commonjs/i18n/tr.json +54 -54
- package/lib/commonjs/version.json +1 -1
- package/lib/module/components/Attachment/Attachment.js +22 -14
- package/lib/module/components/Attachment/Attachment.js.map +1 -1
- package/lib/module/components/Attachment/Card.js +11 -4
- package/lib/module/components/Attachment/Card.js.map +1 -1
- package/lib/module/components/Attachment/Gallery.js +24 -16
- package/lib/module/components/Attachment/Gallery.js.map +1 -1
- package/lib/module/components/Message/Message.js +14 -7
- package/lib/module/components/Message/Message.js.map +1 -1
- package/lib/module/components/Message/MessageSimple/MessageContent.js +22 -16
- package/lib/module/components/Message/MessageSimple/MessageContent.js.map +1 -1
- package/lib/module/components/Message/MessageSimple/MessageSimple.js +14 -8
- package/lib/module/components/Message/MessageSimple/MessageSimple.js.map +1 -1
- package/lib/module/components/Message/MessageSimple/MessageTextContainer.js +10 -4
- package/lib/module/components/Message/MessageSimple/MessageTextContainer.js.map +1 -1
- package/lib/module/components/Message/hooks/useCreateMessageContext.js +6 -1
- package/lib/module/components/Message/hooks/useCreateMessageContext.js.map +1 -1
- package/lib/module/components/MessageOverlay/MessageOverlay.js +9 -3
- package/lib/module/components/MessageOverlay/MessageOverlay.js.map +1 -1
- package/lib/module/contexts/messageContext/MessageContext.js +2 -2
- package/lib/module/contexts/messageContext/MessageContext.js.map +1 -1
- package/lib/module/i18n/en.json +1 -1
- package/lib/module/i18n/fr.json +54 -54
- package/lib/module/i18n/hi.json +54 -54
- package/lib/module/i18n/it.json +54 -54
- package/lib/module/i18n/nl.json +54 -54
- package/lib/module/i18n/ru.json +54 -54
- package/lib/module/i18n/tr.json +54 -54
- package/lib/module/version.json +1 -1
- package/lib/typescript/components/Attachment/Attachment.d.ts +2 -2
- package/lib/typescript/components/Attachment/Card.d.ts +2 -2
- package/lib/typescript/components/Attachment/Gallery.d.ts +1 -1
- package/lib/typescript/components/Message/MessageSimple/MessageContent.d.ts +1 -1
- package/lib/typescript/components/Message/MessageSimple/MessageSimple.d.ts +1 -1
- package/lib/typescript/components/Message/MessageSimple/MessageTextContainer.d.ts +1 -1
- package/lib/typescript/components/Message/hooks/useCreateMessageContext.d.ts +1 -1
- package/lib/typescript/contexts/messageContext/MessageContext.d.ts +8 -2
- package/lib/typescript/i18n/en.json +1 -1
- package/lib/typescript/i18n/fr.json +54 -54
- package/lib/typescript/i18n/hi.json +54 -54
- package/lib/typescript/i18n/it.json +54 -54
- package/lib/typescript/i18n/nl.json +54 -54
- package/lib/typescript/i18n/ru.json +54 -54
- package/lib/typescript/i18n/tr.json +54 -54
- package/package.json +1 -1
- package/src/components/Attachment/Attachment.tsx +16 -2
- package/src/components/Attachment/Card.tsx +22 -4
- package/src/components/Attachment/Gallery.tsx +11 -0
- package/src/components/Message/Message.tsx +9 -0
- package/src/components/Message/MessageSimple/MessageContent.tsx +9 -0
- package/src/components/Message/MessageSimple/MessageSimple.tsx +9 -0
- package/src/components/Message/MessageSimple/MessageTextContainer.tsx +12 -2
- package/src/components/Message/hooks/useCreateMessageContext.ts +4 -0
- package/src/components/MessageOverlay/MessageOverlay.tsx +8 -0
- package/src/contexts/messageContext/MessageContext.tsx +7 -1
- package/src/i18n/en.json +1 -1
- package/src/i18n/fr.json +54 -54
- package/src/i18n/hi.json +54 -54
- package/src/i18n/it.json +54 -54
- package/src/i18n/nl.json +54 -54
- package/src/i18n/ru.json +54 -54
- package/src/i18n/tr.json +54 -54
- 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
|
|
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<
|
|
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<
|
|
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
|
}
|